proteus  1.0.0
C/C++/Fortran libraries
WaveTools.c
Go to the documentation of this file.
1 /* Generated by Cython 0.23.4 */
2 
3 #define PY_SSIZE_T_CLEAN
4 #include "Python.h"
5 #ifndef Py_PYTHON_H
6  #error Python headers needed to compile C extensions, please install development version of Python.
7 #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
8  #error Cython requires Python 2.6+ or Python 3.2+.
9 #else
10 #define CYTHON_ABI "0_23_4"
11 #include <stddef.h>
12 #ifndef offsetof
13 #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
14 #endif
15 #if !defined(WIN32) && !defined(MS_WINDOWS)
16  #ifndef __stdcall
17  #define __stdcall
18  #endif
19  #ifndef __cdecl
20  #define __cdecl
21  #endif
22  #ifndef __fastcall
23  #define __fastcall
24  #endif
25 #endif
26 #ifndef DL_IMPORT
27  #define DL_IMPORT(t) t
28 #endif
29 #ifndef DL_EXPORT
30  #define DL_EXPORT(t) t
31 #endif
32 #ifndef PY_LONG_LONG
33  #define PY_LONG_LONG LONG_LONG
34 #endif
35 #ifndef Py_HUGE_VAL
36  #define Py_HUGE_VAL HUGE_VAL
37 #endif
38 #ifdef PYPY_VERSION
39 #define CYTHON_COMPILING_IN_PYPY 1
40 #define CYTHON_COMPILING_IN_CPYTHON 0
41 #else
42 #define CYTHON_COMPILING_IN_PYPY 0
43 #define CYTHON_COMPILING_IN_CPYTHON 1
44 #endif
45 #if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
46 #define CYTHON_USE_PYLONG_INTERNALS 1
47 #endif
48 #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
49 #define Py_OptimizeFlag 0
50 #endif
51 #define __PYX_BUILD_PY_SSIZE_T "n"
52 #define CYTHON_FORMAT_SSIZE_T "z"
53 #if PY_MAJOR_VERSION < 3
54  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
55  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
56  PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
57  #define __Pyx_DefaultClassType PyClass_Type
58 #else
59  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
60  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
61  PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
62  #define __Pyx_DefaultClassType PyType_Type
63 #endif
64 #ifndef Py_TPFLAGS_CHECKTYPES
65  #define Py_TPFLAGS_CHECKTYPES 0
66 #endif
67 #ifndef Py_TPFLAGS_HAVE_INDEX
68  #define Py_TPFLAGS_HAVE_INDEX 0
69 #endif
70 #ifndef Py_TPFLAGS_HAVE_NEWBUFFER
71  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
72 #endif
73 #ifndef Py_TPFLAGS_HAVE_FINALIZE
74  #define Py_TPFLAGS_HAVE_FINALIZE 0
75 #endif
76 #if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
77  #define CYTHON_PEP393_ENABLED 1
78  #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\
79  0 : _PyUnicode_Ready((PyObject *)(op)))
80  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u)
81  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
82  #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u)
83  #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u)
84  #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i)
85 #else
86  #define CYTHON_PEP393_ENABLED 0
87  #define __Pyx_PyUnicode_READY(op) (0)
88  #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u)
89  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
90  #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE))
91  #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u))
92  #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
93 #endif
94 #if CYTHON_COMPILING_IN_PYPY
95  #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b)
96  #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)
97 #else
98  #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b)
99  #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
100  PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
101 #endif
102 #if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
103  #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)
104 #endif
105 #define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
106 #define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
107 #if PY_MAJOR_VERSION >= 3
108  #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)
109 #else
110  #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)
111 #endif
112 #if PY_MAJOR_VERSION >= 3
113  #define PyBaseString_Type PyUnicode_Type
114  #define PyStringObject PyUnicodeObject
115  #define PyString_Type PyUnicode_Type
116  #define PyString_Check PyUnicode_Check
117  #define PyString_CheckExact PyUnicode_CheckExact
118 #endif
119 #if PY_MAJOR_VERSION >= 3
120  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
121  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
122 #else
123  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
124  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
125 #endif
126 #ifndef PySet_CheckExact
127  #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)
128 #endif
129 #define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
130 #if PY_MAJOR_VERSION >= 3
131  #define PyIntObject PyLongObject
132  #define PyInt_Type PyLong_Type
133  #define PyInt_Check(op) PyLong_Check(op)
134  #define PyInt_CheckExact(op) PyLong_CheckExact(op)
135  #define PyInt_FromString PyLong_FromString
136  #define PyInt_FromUnicode PyLong_FromUnicode
137  #define PyInt_FromLong PyLong_FromLong
138  #define PyInt_FromSize_t PyLong_FromSize_t
139  #define PyInt_FromSsize_t PyLong_FromSsize_t
140  #define PyInt_AsLong PyLong_AsLong
141  #define PyInt_AS_LONG PyLong_AS_LONG
142  #define PyInt_AsSsize_t PyLong_AsSsize_t
143  #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask
144  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
145  #define PyNumber_Int PyNumber_Long
146 #endif
147 #if PY_MAJOR_VERSION >= 3
148  #define PyBoolObject PyLongObject
149 #endif
150 #if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
151  #ifndef PyUnicode_InternFromString
152  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
153  #endif
154 #endif
155 #if PY_VERSION_HEX < 0x030200A4
156  typedef long Py_hash_t;
157  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
158  #define __Pyx_PyInt_AsHash_t PyInt_AsLong
159 #else
160  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
161  #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t
162 #endif
163 #if PY_MAJOR_VERSION >= 3
164  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
165 #else
166  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
167 #endif
168 #if PY_VERSION_HEX >= 0x030500B1
169 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
170 #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
171 #elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
172 typedef struct {
173  unaryfunc am_await;
174  unaryfunc am_aiter;
175  unaryfunc am_anext;
176 } __Pyx_PyAsyncMethodsStruct;
177 #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
178 #else
179 #define __Pyx_PyType_AsAsync(obj) NULL
180 #endif
181 #ifndef CYTHON_RESTRICT
182  #if defined(__GNUC__)
183  #define CYTHON_RESTRICT __restrict__
184  #elif defined(_MSC_VER) && _MSC_VER >= 1400
185  #define CYTHON_RESTRICT __restrict
186  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
187  #define CYTHON_RESTRICT restrict
188  #else
189  #define CYTHON_RESTRICT
190  #endif
191 #endif
192 #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
193 
194 #ifndef CYTHON_INLINE
195  #if defined(__GNUC__)
196  #define CYTHON_INLINE __inline__
197  #elif defined(_MSC_VER)
198  #define CYTHON_INLINE __inline
199  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
200  #define CYTHON_INLINE inline
201  #else
202  #define CYTHON_INLINE
203  #endif
204 #endif
205 
206 #if defined(WIN32) || defined(MS_WINDOWS)
207  #define _USE_MATH_DEFINES
208 #endif
209 #include <math.h>
210 #ifdef NAN
211 #define __PYX_NAN() ((float) NAN)
212 #else
213 static CYTHON_INLINE float __PYX_NAN() {
214  float value;
215  memset(&value, 0xFF, sizeof(value));
216  return value;
217 }
218 #endif
219 
220 
221 #if PY_MAJOR_VERSION >= 3
222  #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y)
223  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)
224 #else
225  #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y)
226  #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)
227 #endif
228 
229 #ifndef __PYX_EXTERN_C
230  #ifdef __cplusplus
231  #define __PYX_EXTERN_C extern "C"
232  #else
233  #define __PYX_EXTERN_C extern
234  #endif
235 #endif
236 
237 #define __PYX_HAVE__WaveTools
238 #define __PYX_HAVE_API__WaveTools
239 #ifdef _OPENMP
240 #include <omp.h>
241 #endif /* _OPENMP */
242 
243 #ifdef PYREX_WITHOUT_ASSERTIONS
244 #define CYTHON_WITHOUT_ASSERTIONS
245 #endif
246 
247 #ifndef CYTHON_UNUSED
248 # if defined(__GNUC__)
249 # if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
250 # define CYTHON_UNUSED __attribute__ ((__unused__))
251 # else
252 # define CYTHON_UNUSED
253 # endif
254 # elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
255 # define CYTHON_UNUSED __attribute__ ((__unused__))
256 # else
257 # define CYTHON_UNUSED
258 # endif
259 #endif
260 #ifndef CYTHON_NCP_UNUSED
261 # if CYTHON_COMPILING_IN_CPYTHON
262 # define CYTHON_NCP_UNUSED
263 # else
264 # define CYTHON_NCP_UNUSED CYTHON_UNUSED
265 # endif
266 #endif
267 typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
268  const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
269 
270 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
271 #define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
272 #define __PYX_DEFAULT_STRING_ENCODING ""
273 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
274 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
275 #define __Pyx_uchar_cast(c) ((unsigned char)c)
276 #define __Pyx_long_cast(x) ((long)x)
277 #define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\
278  (sizeof(type) < sizeof(Py_ssize_t)) ||\
279  (sizeof(type) > sizeof(Py_ssize_t) &&\
280  likely(v < (type)PY_SSIZE_T_MAX ||\
281  v == (type)PY_SSIZE_T_MAX) &&\
282  (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
283  v == (type)PY_SSIZE_T_MIN))) ||\
284  (sizeof(type) == sizeof(Py_ssize_t) &&\
285  (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
286  v == (type)PY_SSIZE_T_MAX))) )
287 #if defined (__cplusplus) && __cplusplus >= 201103L
288  #include <cstdlib>
289  #define __Pyx_sst_abs(value) std::abs(value)
290 #elif SIZEOF_INT >= SIZEOF_SIZE_T
291  #define __Pyx_sst_abs(value) abs(value)
292 #elif SIZEOF_LONG >= SIZEOF_SIZE_T
293  #define __Pyx_sst_abs(value) labs(value)
294 #elif defined (_MSC_VER) && defined (_M_X64)
295  #define __Pyx_sst_abs(value) _abs64(value)
296 #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
297  #define __Pyx_sst_abs(value) llabs(value)
298 #elif defined (__GNUC__)
299  #define __Pyx_sst_abs(value) __builtin_llabs(value)
300 #else
301  #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
302 #endif
303 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
304 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
305 #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
306 #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
307 #define __Pyx_PyBytes_FromString PyBytes_FromString
308 #define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
309 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
310 #if PY_MAJOR_VERSION < 3
311  #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString
312  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
313 #else
314  #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString
315  #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
316 #endif
317 #define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s))
318 #define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))
319 #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)
320 #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)
321 #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)
322 #define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)
323 #define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
324 #if PY_MAJOR_VERSION < 3
325 static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
326 {
327  const Py_UNICODE *u_end = u;
328  while (*u_end++) ;
329  return (size_t)(u_end - u - 1);
330 }
331 #else
332 #define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
333 #endif
334 #define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
335 #define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
336 #define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode
337 #define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
338 #define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
339 #define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
340 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
341 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
342 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
343 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
344 #if CYTHON_COMPILING_IN_CPYTHON
345 #define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
346 #else
347 #define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
348 #endif
349 #define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
350 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
351 static int __Pyx_sys_getdefaultencoding_not_ascii;
352 static int __Pyx_init_sys_getdefaultencoding_params(void) {
353  PyObject* sys;
354  PyObject* default_encoding = NULL;
355  PyObject* ascii_chars_u = NULL;
356  PyObject* ascii_chars_b = NULL;
357  const char* default_encoding_c;
358  sys = PyImport_ImportModule("sys");
359  if (!sys) goto bad;
360  default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
361  Py_DECREF(sys);
362  if (!default_encoding) goto bad;
363  default_encoding_c = PyBytes_AsString(default_encoding);
364  if (!default_encoding_c) goto bad;
365  if (strcmp(default_encoding_c, "ascii") == 0) {
366  __Pyx_sys_getdefaultencoding_not_ascii = 0;
367  } else {
368  char ascii_chars[128];
369  int c;
370  for (c = 0; c < 128; c++) {
371  ascii_chars[c] = c;
372  }
373  __Pyx_sys_getdefaultencoding_not_ascii = 1;
374  ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
375  if (!ascii_chars_u) goto bad;
376  ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
377  if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
378  PyErr_Format(
379  PyExc_ValueError,
380  "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
381  default_encoding_c);
382  goto bad;
383  }
384  Py_DECREF(ascii_chars_u);
385  Py_DECREF(ascii_chars_b);
386  }
387  Py_DECREF(default_encoding);
388  return 0;
389 bad:
390  Py_XDECREF(default_encoding);
391  Py_XDECREF(ascii_chars_u);
392  Py_XDECREF(ascii_chars_b);
393  return -1;
394 }
395 #endif
396 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
397 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
398 #else
399 #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
400 #if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
401 static char* __PYX_DEFAULT_STRING_ENCODING;
402 static int __Pyx_init_sys_getdefaultencoding_params(void) {
403  PyObject* sys;
404  PyObject* default_encoding = NULL;
405  char* default_encoding_c;
406  sys = PyImport_ImportModule("sys");
407  if (!sys) goto bad;
408  default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
409  Py_DECREF(sys);
410  if (!default_encoding) goto bad;
411  default_encoding_c = PyBytes_AsString(default_encoding);
412  if (!default_encoding_c) goto bad;
413  __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
414  if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
415  strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
416  Py_DECREF(default_encoding);
417  return 0;
418 bad:
419  Py_XDECREF(default_encoding);
420  return -1;
421 }
422 #endif
423 #endif
424 
425 
426 /* Test for GCC > 2.95 */
427 #if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
428  #define likely(x) __builtin_expect(!!(x), 1)
429  #define unlikely(x) __builtin_expect(!!(x), 0)
430 #else /* !__GNUC__ or GCC < 2.95 */
431  #define likely(x) (x)
432  #define unlikely(x) (x)
433 #endif /* __GNUC__ */
434 
435 static PyObject *__pyx_m;
436 static PyObject *__pyx_d;
437 static PyObject *__pyx_b;
438 static PyObject *__pyx_empty_tuple;
439 static PyObject *__pyx_empty_bytes;
440 static int __pyx_lineno;
441 static int __pyx_clineno = 0;
442 static const char * __pyx_cfilenm= __FILE__;
443 static const char *__pyx_filename;
444 
445 
446 static const char *__pyx_f[] = {
447  "proteus/WaveTools.pyx",
448 };
449 
450 /*--- Type declarations ---*/
451 struct __pyx_defaults;
452 typedef struct __pyx_defaults __pyx_defaults;
453 struct __pyx_defaults {
454  PyObject *__pyx_arg_meanVelocity;
455 };
456 
457 /* --- Runtime support code (head) --- */
458 #ifndef CYTHON_REFNANNY
459  #define CYTHON_REFNANNY 0
460 #endif
461 #if CYTHON_REFNANNY
462  typedef struct {
463  void (*INCREF)(void*, PyObject*, int);
464  void (*DECREF)(void*, PyObject*, int);
465  void (*GOTREF)(void*, PyObject*, int);
466  void (*GIVEREF)(void*, PyObject*, int);
467  void* (*SetupContext)(const char*, int, const char*);
468  void (*FinishContext)(void**);
469  } __Pyx_RefNannyAPIStruct;
470  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
471  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
472  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
473 #ifdef WITH_THREAD
474  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
475  if (acquire_gil) {\
476  PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
477  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
478  PyGILState_Release(__pyx_gilstate_save);\
479  } else {\
480  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
481  }
482 #else
483  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
484  __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
485 #endif
486  #define __Pyx_RefNannyFinishContext()\
487  __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
488  #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
489  #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
490  #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
491  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
492  #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
493  #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
494  #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
495  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
496 #else
497  #define __Pyx_RefNannyDeclarations
498  #define __Pyx_RefNannySetupContext(name, acquire_gil)
499  #define __Pyx_RefNannyFinishContext()
500  #define __Pyx_INCREF(r) Py_INCREF(r)
501  #define __Pyx_DECREF(r) Py_DECREF(r)
502  #define __Pyx_GOTREF(r)
503  #define __Pyx_GIVEREF(r)
504  #define __Pyx_XINCREF(r) Py_XINCREF(r)
505  #define __Pyx_XDECREF(r) Py_XDECREF(r)
506  #define __Pyx_XGOTREF(r)
507  #define __Pyx_XGIVEREF(r)
508 #endif
509 #define __Pyx_XDECREF_SET(r, v) do {\
510  PyObject *tmp = (PyObject *) r;\
511  r = v; __Pyx_XDECREF(tmp);\
512  } while (0)
513 #define __Pyx_DECREF_SET(r, v) do {\
514  PyObject *tmp = (PyObject *) r;\
515  r = v; __Pyx_DECREF(tmp);\
516  } while (0)
517 #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
518 #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
519 
520 #if CYTHON_COMPILING_IN_CPYTHON
521 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
522  PyTypeObject* tp = Py_TYPE(obj);
523  if (likely(tp->tp_getattro))
524  return tp->tp_getattro(obj, attr_name);
525 #if PY_MAJOR_VERSION < 3
526  if (likely(tp->tp_getattr))
527  return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
528 #endif
529  return PyObject_GetAttr(obj, attr_name);
530 }
531 #else
532 #define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
533 #endif
534 
535 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
536 
537 static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
538  Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
539 
540 static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
541 
542 static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
543  PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
544  const char* function_name);
545 
546 #if CYTHON_COMPILING_IN_CPYTHON
547 static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
548  PyListObject* L = (PyListObject*) list;
549  Py_ssize_t len = Py_SIZE(list);
550  if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
551  Py_INCREF(x);
552  PyList_SET_ITEM(list, len, x);
553  Py_SIZE(list) = len+1;
554  return 0;
555  }
556  return PyList_Append(list, x);
557 }
558 #else
559 #define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
560 #endif
561 
562 static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
563  int result = PySequence_Contains(seq, item);
564  return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
565 }
566 
567 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
568 
569 #if CYTHON_COMPILING_IN_CPYTHON
570 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
571 #else
572 #define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
573 #endif
574 
575 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);
576 
577 #define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
578  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
579  __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
580  (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
581  __Pyx_GetItemInt_Generic(o, to_py_func(i))))
582 #define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
583  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
584  __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
585  (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
586 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
587  int wraparound, int boundscheck);
588 #define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
589  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
590  __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
591  (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
592 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
593  int wraparound, int boundscheck);
594 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
595 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
596  int is_list, int wraparound, int boundscheck);
597 
598 #if CYTHON_COMPILING_IN_CPYTHON
599 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
600 #endif
601 
602 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
603 
604 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(
605  PyObject* obj, Py_ssize_t cstart, Py_ssize_t cstop,
606  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
607  int has_cstart, int has_cstop, int wraparound);
608 
609 #if CYTHON_COMPILING_IN_CPYTHON
610 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
611 #else
612 #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)
613 #endif
614 
615 #if CYTHON_COMPILING_IN_CPYTHON
616 static PyObject* __Pyx_PyFloat_DivideCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
617 #else
618 #define __Pyx_PyFloat_DivideCObj(op1, op2, floatval, inplace)\
619  ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
620  #endif
621 
622 #if CYTHON_COMPILING_IN_CPYTHON
623 static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
624 #else
625 #define __Pyx_PyFloat_SubtractCObj(op1, op2, floatval, inplace)\
626  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
627 #endif
628 
629 #if CYTHON_COMPILING_IN_CPYTHON
630 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, int inplace);
631 #else
632 #define __Pyx_PyFloat_AddCObj(op1, op2, floatval, inplace)\
633  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
634 #endif
635 
636 #if CYTHON_COMPILING_IN_CPYTHON
637 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, int inplace);
638 #else
639 #define __Pyx_PyFloat_SubtractObjC(op1, op2, floatval, inplace)\
640  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
641 #endif
642 
643 #define __Pyx_PyObject_DelSlice(obj, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)\
644  __Pyx_PyObject_SetSlice(obj, (PyObject*)NULL, cstart, cstop, py_start, py_stop, py_slice, has_cstart, has_cstop, wraparound)
645 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(
646  PyObject* obj, PyObject* value, Py_ssize_t cstart, Py_ssize_t cstop,
647  PyObject** py_start, PyObject** py_stop, PyObject** py_slice,
648  int has_cstart, int has_cstop, int wraparound);
649 
650 static double __Pyx__PyObject_AsDouble(PyObject* obj);
651 #if CYTHON_COMPILING_IN_PYPY
652 #define __Pyx_PyObject_AsDouble(obj)\
653 (likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) :\
654  likely(PyInt_CheckExact(obj)) ?\
655  PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
656 #else
657 #define __Pyx_PyObject_AsDouble(obj)\
658 ((likely(PyFloat_CheckExact(obj))) ?\
659  PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
660 #endif
661 
662 #if CYTHON_COMPILING_IN_CPYTHON
663 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
664 #else
665 #define __Pyx_PyInt_SubtractObjC(op1, op2, intval, inplace)\
666  (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
667 #endif
668 
669 #define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck)\
670  (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
671  __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
672  (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
673  __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
674 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
675 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
676  int is_list, int wraparound, int boundscheck);
677 
678 #if CYTHON_COMPILING_IN_CPYTHON
679 #define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o,n,NULL)
680 static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
681  PyTypeObject* tp = Py_TYPE(obj);
682  if (likely(tp->tp_setattro))
683  return tp->tp_setattro(obj, attr_name, value);
684 #if PY_MAJOR_VERSION < 3
685  if (likely(tp->tp_setattr))
686  return tp->tp_setattr(obj, PyString_AS_STRING(attr_name), value);
687 #endif
688  return PyObject_SetAttr(obj, attr_name, value);
689 }
690 #else
691 #define __Pyx_PyObject_DelAttrStr(o,n) PyObject_DelAttr(o,n)
692 #define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
693 #endif
694 
695 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb);
696 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb);
697 
698 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
699 
700 #if CYTHON_COMPILING_IN_CPYTHON
701 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
702 #else
703 #define __Pyx_PyInt_AddObjC(op1, op2, intval, inplace)\
704  (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
705 #endif
706 
707 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);
708 
709 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);
710 
711 #include <string.h>
712 
713 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);
714 
715 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);
716 
717 #if PY_MAJOR_VERSION >= 3
718 #define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals
719 #else
720 #define __Pyx_PyString_Equals __Pyx_PyBytes_Equals
721 #endif
722 
723 #if CYTHON_COMPILING_IN_CPYTHON
724 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, int inplace);
725 #else
726 #define __Pyx_PyFloat_DivideObjC(op1, op2, floatval, inplace)\
727  ((inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2)))
728  #endif
729 
730 #if CYTHON_COMPILING_IN_CPYTHON
731 static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, long intval, int inplace);
732 #else
733 #define __Pyx_PyInt_EqObjC(op1, op2, intval, inplace)\
734  PyObject_RichCompare(op1, op2, Py_EQ)
735  #endif
736 
737 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);
738 
739 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);
740 
741 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);
742 
743 #define __Pyx_CyFunction_USED 1
744 #include <structmember.h>
745 #define __Pyx_CYFUNCTION_STATICMETHOD 0x01
746 #define __Pyx_CYFUNCTION_CLASSMETHOD 0x02
747 #define __Pyx_CYFUNCTION_CCLASS 0x04
748 #define __Pyx_CyFunction_GetClosure(f)\
749  (((__pyx_CyFunctionObject *) (f))->func_closure)
750 #define __Pyx_CyFunction_GetClassObj(f)\
751  (((__pyx_CyFunctionObject *) (f))->func_classobj)
752 #define __Pyx_CyFunction_Defaults(type, f)\
753  ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
754 #define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
755  ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
756 typedef struct {
757  PyCFunctionObject func;
758 #if PY_VERSION_HEX < 0x030500A0
759  PyObject *func_weakreflist;
760 #endif
761  PyObject *func_dict;
762  PyObject *func_name;
763  PyObject *func_qualname;
764  PyObject *func_doc;
765  PyObject *func_globals;
766  PyObject *func_code;
767  PyObject *func_closure;
768  PyObject *func_classobj;
769  void *defaults;
770  int defaults_pyobjects;
771  int flags;
772  PyObject *defaults_tuple;
773  PyObject *defaults_kwdict;
774  PyObject *(*defaults_getter)(PyObject *);
775  PyObject *func_annotations;
776 } __pyx_CyFunctionObject;
777 static PyTypeObject *__pyx_CyFunctionType = 0;
778 #define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\
779  __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)
780 static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml,
781  int flags, PyObject* qualname,
782  PyObject *self,
783  PyObject *module, PyObject *globals,
784  PyObject* code);
785 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m,
786  size_t size,
787  int pyobjects);
788 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
789  PyObject *tuple);
790 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
791  PyObject *dict);
792 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
793  PyObject *dict);
794 static int __pyx_CyFunction_init(void);
795 
796 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
797 
798 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
799  PyObject *mkw, PyObject *modname, PyObject *doc);
800 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
801  PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
802 
803 typedef struct {
804  int code_line;
805  PyCodeObject* code_object;
806 } __Pyx_CodeObjectCacheEntry;
807 struct __Pyx_CodeObjectCache {
808  int count;
809  int max_count;
810  __Pyx_CodeObjectCacheEntry* entries;
811 };
812 static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
813 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
814 static PyCodeObject *__pyx_find_code_object(int code_line);
815 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
816 
817 static void __Pyx_AddTraceback(const char *funcname, int c_line,
818  int py_line, const char *filename);
819 
820 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
821 
822 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
823 
824 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
825 
826 static int __Pyx_check_binary_version(void);
827 
828 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
829 
830 
831 /* Module declarations from 'WaveTools' */
832 #define __Pyx_MODULE_NAME "WaveTools"
833 int __pyx_module_is_main_WaveTools = 0;
834 
835 /* Implementation of 'WaveTools' */
836 static PyObject *__pyx_builtin_range;
837 static PyObject *__pyx_builtin_sum;
838 static PyObject *__pyx_builtin_open;
839 static PyObject *__pyx_builtin_max;
840 static PyObject *__pyx_builtin_zip;
841 static char __pyx_k_B[] = "B";
842 static char __pyx_k_K[] = "K";
843 static char __pyx_k_M[] = "M";
844 static char __pyx_k_N[] = "N";
845 static char __pyx_k_U[] = "U";
846 static char __pyx_k_V[] = "V";
847 static char __pyx_k_Y[] = "Y";
848 static char __pyx_k_Z[] = "Z";
849 static char __pyx_k_a[] = "a";
850 static char __pyx_k_d[] = "d";
851 static char __pyx_k_f[] = "f";
852 static char __pyx_k_g[] = "g";
853 static char __pyx_k_i[] = "i";
854 static char __pyx_k_k[] = "k";
855 static char __pyx_k_l[] = "l";
856 static char __pyx_k_r[] = "r";
857 static char __pyx_k_s[] = "s";
858 static char __pyx_k_t[] = "t";
859 static char __pyx_k_u[] = "u";
860 static char __pyx_k_w[] = "w";
861 static char __pyx_k_x[] = "x";
862 static char __pyx_k_y[] = "y";
863 static char __pyx_k_G0[] = "G0";
864 static char __pyx_k_HH[] = "HH";
865 static char __pyx_k_Hs[] = "Hs";
866 static char __pyx_k_NN[] = "NN";
867 static char __pyx_k_Nf[] = "Nf";
868 static char __pyx_k_Nw[] = "Nw";
869 static char __pyx_k_Tm[] = "Tm";
870 static char __pyx_k_Tp[] = "Tp";
871 static char __pyx_k_UH[] = "UH";
872 static char __pyx_k_UV[] = "UV";
873 static char __pyx_k_aa[] = "aa";
874 static char __pyx_k_ai[] = "ai";
875 static char __pyx_k_bj[] = "bj";
876 static char __pyx_k_df[] = "df";
877 static char __pyx_k_dt[] = "dt";
878 static char __pyx_k_f0[] = "f0";
879 static char __pyx_k_fi[] = "fi";
880 static char __pyx_k_fp[] = "fp";
881 static char __pyx_k_ii[] = "ii";
882 static char __pyx_k_jj[] = "jj";
883 static char __pyx_k_ki[] = "ki";
884 static char __pyx_k_kk[] = "kk";
885 static char __pyx_k_nn[] = "nn";
886 static char __pyx_k_np[] = "np";
887 static char __pyx_k_pi[] = "pi";
888 static char __pyx_k_pp[] = "pp";
889 static char __pyx_k_rr[] = "rr";
890 static char __pyx_k_t0[] = "t0";
891 static char __pyx_k_th[] = "th";
892 static char __pyx_k_tt[] = "tt";
893 static char __pyx_k_v1[] = "v1";
894 static char __pyx_k_v2[] = "v2";
895 static char __pyx_k_ww[] = "ww";
896 static char __pyx_k_x0[] = "x0";
897 static char __pyx_k_x1[] = "x1";
898 static char __pyx_k_y0[] = "y0";
899 static char __pyx_k_z0[] = "z0";
900 static char __pyx_k_Eta[] = "Eta";
901 static char __pyx_k_NN1[] = "NN1";
902 static char __pyx_k_TMA[] = "TMA";
903 static char __pyx_k__82[] = ",";
904 static char __pyx_k_aiM[] = "aiM";
905 static char __pyx_k_amp[] = "amp";
906 static char __pyx_k_cos[] = "cos";
907 static char __pyx_k_csv[] = ".csv";
908 static char __pyx_k_cut[] = "cut";
909 static char __pyx_k_doc[] = "__doc__";
910 static char __pyx_k_dth[] = "dth";
911 static char __pyx_k_eta[] = "eta";
912 static char __pyx_k_exp[] = "exp";
913 static char __pyx_k_fft[] = "fft";
914 static char __pyx_k_fid[] = "fid";
915 static char __pyx_k_fim[] = "fim";
916 static char __pyx_k_fun[] = "fun";
917 static char __pyx_k_kiM[] = "kiM";
918 static char __pyx_k_log[] = "log";
919 static char __pyx_k_max[] = "max";
920 static char __pyx_k_mwl[] = "mwl";
921 static char __pyx_k_phi[] = "phi";
922 static char __pyx_k_sin[] = "sin";
923 static char __pyx_k_sum[] = "sum";
924 static char __pyx_k_sys[] = "sys";
925 static char __pyx_k_tma[] = "tma";
926 static char __pyx_k_txt[] = ".txt";
927 static char __pyx_k_zip[] = "zip";
928 static char __pyx_k_Mtot[] = "Mtot";
929 static char __pyx_k_Nall[] = "Nall";
930 static char __pyx_k_Sint[] = "Sint";
931 static char __pyx_k_cosh[] = "cosh";
932 static char __pyx_k_diff[] = "diff";
933 static char __pyx_k_exit[] = "exit";
934 static char __pyx_k_fmax[] = "fmax";
935 static char __pyx_k_fmin[] = "fmin";
936 static char __pyx_k_freq[] = "freq";
937 static char __pyx_k_func[] = "func";
938 static char __pyx_k_gAbs[] = "gAbs";
939 static char __pyx_k_iend[] = "iend";
940 static char __pyx_k_imax[] = "imax";
941 static char __pyx_k_imin[] = "imin";
942 static char __pyx_k_init[] = "__init__";
943 static char __pyx_k_kAbs[] = "kAbs";
944 static char __pyx_k_kDir[] = "kDir";
945 static char __pyx_k_kdir[] = "kdir";
946 static char __pyx_k_main[] = "__main__";
947 static char __pyx_k_math[] = "math";
948 static char __pyx_k_mean[] = "mean";
949 static char __pyx_k_name[] = "__name__";
950 static char __pyx_k_nfft[] = "nfft";
951 static char __pyx_k_ones[] = "ones";
952 static char __pyx_k_open[] = "open";
953 static char __pyx_k_phi0[] = "phi0";
954 static char __pyx_k_phiM[] = "phiM";
955 static char __pyx_k_rand[] = "rand";
956 static char __pyx_k_real[] = "real";
957 static char __pyx_k_self[] = "self";
958 static char __pyx_k_sinh[] = "sinh";
959 static char __pyx_k_smax[] = "smax";
960 static char __pyx_k_span[] = "span";
961 static char __pyx_k_sqrt[] = "sqrt";
962 static char __pyx_k_tanh[] = "tanh";
963 static char __pyx_k_term[] = "term";
964 static char __pyx_k_test[] = "__test__";
965 static char __pyx_k_time[] = "time";
966 static char __pyx_k_vDir[] = "vDir";
967 static char __pyx_k_wind[] = "wind";
968 static char __pyx_k_Si_Jm[] = "Si_Jm";
969 static char __pyx_k_Si_Sp[] = "Si_Sp";
970 static char __pyx_k_array[] = "array";
971 static char __pyx_k_close[] = "close";
972 static char __pyx_k_cmath[] = "cmath";
973 static char __pyx_k_cos2s[] = "cos2s";
974 static char __pyx_k_depth[] = "depth";
975 static char __pyx_k_fft_x[] = "fft_x";
976 static char __pyx_k_gamma[] = "gamma";
977 static char __pyx_k_ipeak[] = "ipeak";
978 static char __pyx_k_kDirM[] = "kDirM";
979 static char __pyx_k_kDiri[] = "kDiri";
980 static char __pyx_k_kmode[] = "kmode";
981 static char __pyx_k_level[] = "level";
982 static char __pyx_k_ncols[] = "ncols";
983 static char __pyx_k_niter[] = "niter";
984 static char __pyx_k_numpy[] = "numpy";
985 static char __pyx_k_omega[] = "omega";
986 static char __pyx_k_phase[] = "phase";
987 static char __pyx_k_range[] = "range";
988 static char __pyx_k_setup[] = "setup";
989 static char __pyx_k_shape[] = "shape";
990 static char __pyx_k_sigma[] = "sigma";
991 static char __pyx_k_tdata[] = "tdata";
992 static char __pyx_k_theta[] = "theta";
993 static char __pyx_k_tlast[] = "tlast";
994 static char __pyx_k_w_aux[] = "w_aux";
995 static char __pyx_k_where[] = "where";
996 static char __pyx_k_wmode[] = "wmode";
997 static char __pyx_k_zeros[] = "zeros";
998 static char __pyx_k_Bcoeff[] = "Bcoeff";
999 static char __pyx_k_Cutoff[] = "Cutoff";
1000 static char __pyx_k_Fenton[] = "Fenton";
1001 static char __pyx_k_Linear[] = "Linear";
1002 static char __pyx_k_Nftemp[] = "Nftemp";
1003 static char __pyx_k_Nwaves[] = "Nwaves";
1004 static char __pyx_k_PM_mod[] = "PM_mod";
1005 static char __pyx_k_Window[] = "Window";
1006 static char __pyx_k_Ycoeff[] = "Ycoeff";
1007 static char __pyx_k_aiDirs[] = "aiDirs";
1008 static char __pyx_k_append[] = "append";
1009 static char __pyx_k_costap[] = "costap";
1010 static char __pyx_k_cutoff[] = "cutoff";
1011 static char __pyx_k_decomp[] = "decomp";
1012 static char __pyx_k_import[] = "__import__";
1013 static char __pyx_k_interp[] = "interp";
1014 static char __pyx_k_ispan1[] = "ispan1";
1015 static char __pyx_k_ispan2[] = "ispan2";
1016 static char __pyx_k_module[] = "__module__";
1017 static char __pyx_k_omega0[] = "omega0";
1018 static char __pyx_k_omegaM[] = "omegaM";
1019 static char __pyx_k_period[] = "period";
1020 static char __pyx_k_random[] = "random";
1021 static char __pyx_k_tfirst[] = "tfirst";
1022 static char __pyx_k_thetas[] = "thetas";
1023 static char __pyx_k_tolist[] = "tolist";
1024 static char __pyx_k_tophat[] = "tophat";
1025 static char __pyx_k_tstart[] = "tstart";
1026 static char __pyx_k_vector[] = "vector";
1027 static char __pyx_k_JONSWAP[] = "JONSWAP";
1028 static char __pyx_k_Overlap[] = "Overlap";
1029 static char __pyx_k_Twindow[] = "Twindow";
1030 static char __pyx_k_Ufenton[] = "Ufenton";
1031 static char __pyx_k_dt_temp[] = "dt_temp";
1032 static char __pyx_k_fftfreq[] = "fftfreq";
1033 static char __pyx_k_fim_tmp[] = "fim_tmp";
1034 static char __pyx_k_loadtxt[] = "loadtxt";
1035 static char __pyx_k_npoints[] = "npoints";
1036 static char __pyx_k_overlap[] = "overlap";
1037 static char __pyx_k_phiDirs[] = "phiDirs";
1038 static char __pyx_k_phiSymm[] = "phiSymm";
1039 static char __pyx_k_prepare[] = "__prepare__";
1040 static char __pyx_k_results[] = "results";
1041 static char __pyx_k_theta_m[] = "theta_m";
1042 static char __pyx_k_tlength[] = "tlength";
1043 static char __pyx_k_uDirect[] = "uDirect";
1044 static char __pyx_k_uWindow[] = "uWindow";
1045 static char __pyx_k_waveDir[] = "waveDir";
1046 static char __pyx_k_Nspectra[] = "Nspectra";
1047 static char __pyx_k_Nwindows[] = "Nwindows";
1048 static char __pyx_k_Toverlap[] = "Toverlap";
1049 static char __pyx_k_dirCheck[] = "dirCheck";
1050 static char __pyx_k_dircheck[] = "dircheck";
1051 static char __pyx_k_doInterp[] = "doInterp";
1052 static char __pyx_k_eta_mode[] = "eta_mode";
1053 static char __pyx_k_filetype[] = "filetype";
1054 static char __pyx_k_funcName[] = "funcName";
1055 static char __pyx_k_func_ret[] = "func_ret";
1056 static char __pyx_k_handover[] = "handover";
1057 static char __pyx_k_linspace[] = "linspace";
1058 static char __pyx_k_logEvent[] = "logEvent";
1059 static char __pyx_k_qualname[] = "__qualname__";
1060 static char __pyx_k_skiprows[] = "skiprows";
1061 static char __pyx_k_spec_fun[] = "spec_fun";
1062 static char __pyx_k_vel_mode[] = "vel_mode";
1063 static char __pyx_k_waveDir0[] = "waveDir0";
1064 static char __pyx_k_waveDirs[] = "waveDirs";
1065 static char __pyx_k_waveType[] = "waveType";
1066 static char __pyx_k_Profiling[] = "Profiling";
1067 static char __pyx_k_WaveTools[] = "WaveTools";
1068 static char __pyx_k_amplitude[] = "amplitude";
1069 static char __pyx_k_delimiter[] = "delimiter";
1070 static char __pyx_k_etaDirect[] = "etaDirect";
1071 static char __pyx_k_etaWindow[] = "etaWindow";
1072 static char __pyx_k_funcNames[] = "funcNames";
1073 static char __pyx_k_metaclass[] = "__metaclass__";
1074 static char __pyx_k_mitsuyasu[] = "mitsuyasu";
1075 static char __pyx_k_spectName[] = "spectName";
1076 static char __pyx_k_time_temp[] = "time_temp";
1077 static char __pyx_k_wind_filt[] = "wind_filt";
1078 static char __pyx_k_TimeSeries[] = "TimeSeries";
1079 static char __pyx_k_bandFactor[] = "bandFactor";
1080 static char __pyx_k_directions[] = "directions";
1081 static char __pyx_k_dispersion[] = "dispersion";
1082 static char __pyx_k_findWindow[] = "findWindow";
1083 static char __pyx_k_rec_direct[] = "rec_direct";
1084 static char __pyx_k_rotation3D[] = "rotation3D";
1085 static char __pyx_k_setVertDir[] = "setVertDir";
1086 static char __pyx_k_spreadName[] = "spreadName";
1087 static char __pyx_k_spread_fun[] = "spread_fun";
1088 static char __pyx_k_temp_array[] = "temp_array";
1089 static char __pyx_k_waveHeight[] = "waveHeight";
1090 static char __pyx_k_wavelength[] = "wavelength";
1091 static char __pyx_k_windowName[] = "windowName";
1092 static char __pyx_k_RandomWaves[] = "RandomWaves";
1093 static char __pyx_k_sigmaReturn[] = "sigmaReturn";
1094 static char __pyx_k_validSpread[] = "validSpread";
1095 static char __pyx_k_windows_rec[] = "windows_rec";
1096 static char __pyx_k_SpatialTools[] = "SpatialTools";
1097 static char __pyx_k_meanVelocity[] = "meanVelocity";
1098 static char __pyx_k_normIntegral[] = "normIntegral";
1099 static char __pyx_k_setDirVector[] = "setDirVector";
1100 static char __pyx_k_validSpectra[] = "validSpectra";
1101 static char __pyx_k_validWindows[] = "validWindows";
1102 static char __pyx_k_RandomWaves_u[] = "RandomWaves.u";
1103 static char __pyx_k_spread_params[] = "spread_params";
1104 static char __pyx_k_window_params[] = "window_params";
1105 static char __pyx_k_knownWaveTypes[] = "knownWaveTypes";
1106 static char __pyx_k_timeSeriesFile[] = "timeSeriesFile";
1107 static char __pyx_k_validFunctions[] = "validFunctions";
1108 static char __pyx_k_RandomWaves_eta[] = "RandomWaves.eta";
1109 static char __pyx_k_spectral_params[] = "spectral_params";
1110 static char __pyx_k_DirectionalWaves[] = "DirectionalWaves";
1111 static char __pyx_k_decompose_window[] = "decompose_window";
1112 static char __pyx_k_returnRectangles[] = "returnRectangles";
1113 static char __pyx_k_windows_handover[] = "windows_handover";
1114 static char __pyx_k_TimeSeries___init[] = "TimeSeries.__init__";
1115 static char __pyx_k_decompose_tseries[] = "decompose_tseries";
1116 static char __pyx_k_reduceToIntervals[] = "reduceToIntervals";
1117 static char __pyx_k_DirectionalWaves_u[] = "DirectionalWaves.u";
1118 static char __pyx_k_MonochromaticWaves[] = "MonochromaticWaves";
1119 static char __pyx_k_RandomWaves___init[] = "RandomWaves.__init__";
1120 static char __pyx_k_TimeSeries_uDirect[] = "TimeSeries.uDirect";
1121 static char __pyx_k_TimeSeries_uWindow[] = "TimeSeries.uWindow";
1122 static char __pyx_k_returnRectangles3D[] = "returnRectangles3D";
1123 static char __pyx_k_timeSeriesPosition[] = "timeSeriesPosition";
1124 static char __pyx_k_DirectionalWaves_eta[] = "DirectionalWaves.eta";
1125 static char __pyx_k_MonochromaticWaves_u[] = "MonochromaticWaves.u";
1126 static char __pyx_k_TimeSeries_etaDirect[] = "TimeSeries.etaDirect";
1127 static char __pyx_k_TimeSeries_etaWindow[] = "TimeSeries.etaWindow";
1128 static char __pyx_k_loadExistingFunction[] = "loadExistingFunction";
1129 static char __pyx_k_TimeSeries_findWindow[] = "TimeSeries.findWindow";
1130 static char __pyx_k_MonochromaticWaves_eta[] = "MonochromaticWaves.eta";
1131 static char __pyx_k_DirectionalWaves___init[] = "DirectionalWaves.__init__";
1132 static char __pyx_k_MultiSpectraRandomWaves[] = "MultiSpectraRandomWaves";
1133 static char __pyx_k_MonochromaticWaves___init[] = "MonochromaticWaves.__init__";
1134 static char __pyx_k_MultiSpectraRandomWaves_u[] = "MultiSpectraRandomWaves.u";
1135 static char __pyx_k_MultiSpectraRandomWaves_eta[] = "MultiSpectraRandomWaves.eta";
1136 static char __pyx_k_MultiSpectraRandomWaves___init[] = "MultiSpectraRandomWaves.__init__";
1137 static char __pyx_k_Generate_a_time_series_by_using[] = "Generate a time series by using spectral windowing method.\n :param timeSeriesFile: Time series file name\n :param skiprows: How many rows to skip while reading time series\n :param: timeSeriesPosition: 3D vector showing the position of the surface elevation sampling\n :param depth: depth [L]\n :param N: number of frequency bins [-]\n :param mwl: mean water level [L]\n :param waveDir: wave Direction vector\n :param g: Gravitational acceleration vector (3 components required)\n :param rec_direct: Logical variable, True for direct reconstruction, False for windowed reconstrunction\n :window_params: dictionary for window reconstruction parameters. Mandatory definition for Nwaves (how many waves per window) Tm (mean wave period), wind_filt (window filter name in string form). Optional: Overlap (window overlap as a percentage of window lenght), Cutoff (length of domain wher filter is applied, as a percentage of the 1/2 of window length)\n ";
1138 static char __pyx_k_WaveTools_py_Reading_spectra_No[] = "WaveTools.py: Reading spectra No %s";
1139 static char __pyx_k_WaveTools_py_Reading_timeseries[] = "WaveTools.py: Reading timeseries from %s file: %s";
1140 static char __pyx_k_WaveTools_py_Set_parameters_for[] = "WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary";
1141 static char __pyx_k_WaveTools_py_Window_handover_is[] = "WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap";
1142 static char __pyx_k_home_cekees_proteus_proteus_Wav[] = "/home/cekees/proteus/proteus/WaveTools.pyx";
1143 static char __pyx_k_Generate_a_monochromatic_wave_tr[] = "Generate a monochromatic wave train in the linear regime\n :param period: Monochromatic wave period\n :param waveHeight: Monochromatic wave height\n :param mwl: Mean water level\n :param depth: Mean water depth\n :param g: gravitational acceleration\n :param waveDir: wave direction vector (all 3 components needed)\n :param wavelength: wavelength for nonlinear (Fenton) waves. Can assume None if waves are linear, need to declare if waveType is Fenton\n :param waveType: can be Linear or Fenton (nonlinear). Linear by default\n :param Ycoeff: Y coefficient array for Fenton waves (see JD Fenton (1988) THE NUMERICAL SOLUTION OF STEADY WATER WAVE PROBLEMS, Computer and Geosciences, 14(3), 357-368, \n http://johndfenton.com/Papers/Fenton88-The-numerical-solution-of-steady-water-wave-problems.pdf \n :param BCoeff: B coefficient array for Fenton waves (see reference above)\n :meanVelocity: Current velocity. Recommended use with Fenton waves\n :phi0: Phase of the wave \n";
1144 static char __pyx_k_Generate_a_random_wave_timeserie[] = "Generate a random wave timeseries from multiple spectra. \n Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)\n :param Nspectra, number of spectra\n ";
1145 static char __pyx_k_Generate_approximate_random_wave[] = "Generate approximate random wave solutions\n :param Tp: frequency [1/T]\n :param Hs: significant wave height [L]\n :param mwl: mean water level [L]\n :param depth: depth [L]\n :param waveDir:wave Direction vector with three components [-]\n :param g: Gravitational acceleration vector with three components [L/T^2]\n :param N: number of frequency bins [-]\n :param bandFactor: width factor for band around fp [-]\n :param spectName: Name of spectral function in string format. Use a random word and run the code to obtain the vaild spectra names\n :param spectral_params: Dictionary of additional arguments for spectral function, specific to each spectral function, except from Hs and Tp e.g. {\"gamma\": 3.3, \"TMA\" = True, \"depth\" = 1} for Jonswap. Check spectral function arguments \n :param phi: Array of component phases - if set to none, random phases are assigned\n";
1146 static char __pyx_k_Tools_for_working_with_water_wav[] = "Tools for working with water waves.\n\nThe primary objective of this module is to provide solutions (exact and\napproximate) for the free surface deformation and subsurface velocity\ncomponents of water waves. These can be used as boundary conditions, wave\ngeneration sources, and validation solutions for numerical wave codes.\n\n.. inheritance-diagram:: ShockCapturing\n :parts: 2\n";
1147 static char __pyx_k_WaveTools_py_Additional_spectral[] = "WaveTools.py: Additional spectral parameters are not valid for the %s spectrum";
1148 static char __pyx_k_WaveTools_py_Additional_spread_p[] = "WaveTools.py: Additional spread parameters are not valid for the %s spectrum";
1149 static char __pyx_k_WaveTools_py_Checking_duration_o[] = "WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration";
1150 static char __pyx_k_WaveTools_py_Correcting_window_d[] = "WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx.";
1151 static char __pyx_k_WaveTools_py_Cutoff_entry_in_win[] = "WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)";
1152 static char __pyx_k_WaveTools_py_Dictionary_key_Nwav[] = "WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary";
1153 static char __pyx_k_WaveTools_py_Dictionary_key_Tm_m[] = "WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary";
1154 static char __pyx_k_WaveTools_py_Dictionary_key_Wind[] = "WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary";
1155 static char __pyx_k_WaveTools_py_File_s_must_be_give[] = "WaveTools.py: File %s must be given in .txt or .csv format";
1156 static char __pyx_k_WaveTools_py_Found_not_consisten[] = "WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically";
1157 static char __pyx_k_WaveTools_py_Location_vector_for[] = "WaveTools.py: Location vector for timeSeries must have three-components";
1158 static char __pyx_k_WaveTools_py_Need_to_define_Ycoe[] = "WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves";
1159 static char __pyx_k_WaveTools_py_No_phase_array_is_g[] = "WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves";
1160 static char __pyx_k_WaveTools_py_Not_constant_sampli[] = "WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate";
1161 static char __pyx_k_WaveTools_py_Overlap_entry_in_wi[] = "WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)";
1162 static char __pyx_k_WaveTools_py_Parameters_passed_i[] = "WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ";
1163 static char __pyx_k_WaveTools_py_Phase_array_must_ha[] = "WaveTools.py: Phase array must have N elements";
1164 static char __pyx_k_WaveTools_py_Reconstruction_is_e[] = "WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )";
1165 static char __pyx_k_WaveTools_py_Timeseries_file_s_m[] = "WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]";
1166 static char __pyx_k_WaveTools_py_Using_s_windows_for[] = "WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap";
1167 static char __pyx_k_WaveTools_py_Wavelenght_is_not_d[] = "WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments";
1168 static char __pyx_k_WaveTools_py_Wrong_function_type[] = "WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s";
1169 static char __pyx_k_WaveTools_py_meanVelocity_should[] = "WaveTools.py: meanVelocity should be a vector with 3 components. ";
1170 static char __pyx_k_WaveTools_py_performing_a_direct[] = "WaveTools.py: performing a direct series decomposition";
1171 static char __pyx_k_WaveTools_py_performing_series_d[] = "WaveTools.py: performing series decomposition with spectral windows";
1172 static char __pyx_k_WaveTools_py_phi_argument_must_b[] = "WaveTools.py: phi argument must be an array with N elements";
1173 static char __pyx_k_WaveTools_py_phi_in_DirectionalW[] = "WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N";
1174 static char __pyx_k_Wave_direction_is_not_perpendicu[] = "Wave direction is not perpendicular to gravity vector. Check input";
1175 static char __pyx_k_Wavetools_py_Provide_valid_depth[] = "Wavetools:py. Provide valid depth definition definition for TMA spectrum";
1176 static char __pyx_k_Wavetools_py_Stopping_simulation[] = "Wavetools:py. Stopping simulation";
1177 static char __pyx_k_Wrong_wavetype_given_Valid_wavet[] = "Wrong wavetype given: Valid wavetypes are %s";
1178 static char __pyx_k_Generate_a_random_wave_timeserie_2[] = "Generate a random wave timeseries from directional waves\n Same input parameters as RandomWaves with the addition of:\n :param M: number of discrete directions\n :param waveDir0: lead direction in vector form (3 components required)\n :spreadName: Spreading function name (can be cos2s or mitsuyashu), given in string format\n :spread_params: Parameters specific to each spread functions, e.g. {\"s\":15} or {fi0: 1, smax=20}, except from f and theta. Check spread functions for more info\n :phiSymm: Logical variable, by default False, when set to True it generated same phase for symmetrically arranged directions, with respect to the lead direction\n \n ";
1179 static PyObject *__pyx_n_s_B;
1180 static PyObject *__pyx_n_s_Bcoeff;
1181 static PyObject *__pyx_n_s_Cutoff;
1182 static PyObject *__pyx_n_s_DirectionalWaves;
1183 static PyObject *__pyx_n_s_DirectionalWaves___init;
1184 static PyObject *__pyx_n_s_DirectionalWaves_eta;
1185 static PyObject *__pyx_n_s_DirectionalWaves_u;
1186 static PyObject *__pyx_n_s_Eta;
1187 static PyObject *__pyx_n_s_Fenton;
1188 static PyObject *__pyx_n_s_G0;
1189 static PyObject *__pyx_kp_s_Generate_a_monochromatic_wave_tr;
1190 static PyObject *__pyx_kp_s_Generate_a_random_wave_timeserie;
1191 static PyObject *__pyx_kp_s_Generate_a_random_wave_timeserie_2;
1192 static PyObject *__pyx_kp_s_Generate_a_time_series_by_using;
1193 static PyObject *__pyx_kp_s_Generate_approximate_random_wave;
1194 static PyObject *__pyx_n_s_HH;
1195 static PyObject *__pyx_n_s_Hs;
1196 static PyObject *__pyx_n_s_JONSWAP;
1197 static PyObject *__pyx_n_s_K;
1198 static PyObject *__pyx_n_s_Linear;
1199 static PyObject *__pyx_n_s_M;
1200 static PyObject *__pyx_n_s_MonochromaticWaves;
1201 static PyObject *__pyx_n_s_MonochromaticWaves___init;
1202 static PyObject *__pyx_n_s_MonochromaticWaves_eta;
1203 static PyObject *__pyx_n_s_MonochromaticWaves_u;
1204 static PyObject *__pyx_n_s_Mtot;
1205 static PyObject *__pyx_n_s_MultiSpectraRandomWaves;
1206 static PyObject *__pyx_n_s_MultiSpectraRandomWaves___init;
1207 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_eta;
1208 static PyObject *__pyx_n_s_MultiSpectraRandomWaves_u;
1209 static PyObject *__pyx_n_s_N;
1210 static PyObject *__pyx_n_s_NN;
1211 static PyObject *__pyx_n_s_NN1;
1212 static PyObject *__pyx_n_s_Nall;
1213 static PyObject *__pyx_n_s_Nf;
1214 static PyObject *__pyx_n_s_Nftemp;
1215 static PyObject *__pyx_n_s_Nspectra;
1216 static PyObject *__pyx_n_s_Nw;
1217 static PyObject *__pyx_n_s_Nwaves;
1218 static PyObject *__pyx_n_s_Nwindows;
1219 static PyObject *__pyx_n_s_Overlap;
1220 static PyObject *__pyx_n_s_PM_mod;
1221 static PyObject *__pyx_n_s_Profiling;
1222 static PyObject *__pyx_n_s_RandomWaves;
1223 static PyObject *__pyx_n_s_RandomWaves___init;
1224 static PyObject *__pyx_n_s_RandomWaves_eta;
1225 static PyObject *__pyx_n_s_RandomWaves_u;
1226 static PyObject *__pyx_n_s_Si_Jm;
1227 static PyObject *__pyx_n_s_Si_Sp;
1228 static PyObject *__pyx_n_s_Sint;
1229 static PyObject *__pyx_n_s_SpatialTools;
1230 static PyObject *__pyx_n_s_TMA;
1231 static PyObject *__pyx_n_s_TimeSeries;
1232 static PyObject *__pyx_n_s_TimeSeries___init;
1233 static PyObject *__pyx_n_s_TimeSeries_etaDirect;
1234 static PyObject *__pyx_n_s_TimeSeries_etaWindow;
1235 static PyObject *__pyx_n_s_TimeSeries_findWindow;
1236 static PyObject *__pyx_n_s_TimeSeries_uDirect;
1237 static PyObject *__pyx_n_s_TimeSeries_uWindow;
1238 static PyObject *__pyx_n_s_Tm;
1239 static PyObject *__pyx_n_s_Toverlap;
1240 static PyObject *__pyx_n_s_Tp;
1241 static PyObject *__pyx_n_s_Twindow;
1242 static PyObject *__pyx_n_s_U;
1243 static PyObject *__pyx_n_s_UH;
1244 static PyObject *__pyx_n_s_UV;
1245 static PyObject *__pyx_n_s_Ufenton;
1246 static PyObject *__pyx_n_s_V;
1247 static PyObject *__pyx_n_s_WaveTools;
1248 static PyObject *__pyx_kp_s_WaveTools_py_Additional_spectral;
1249 static PyObject *__pyx_kp_s_WaveTools_py_Additional_spread_p;
1250 static PyObject *__pyx_kp_s_WaveTools_py_Checking_duration_o;
1251 static PyObject *__pyx_kp_s_WaveTools_py_Correcting_window_d;
1252 static PyObject *__pyx_kp_s_WaveTools_py_Cutoff_entry_in_win;
1253 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Nwav;
1254 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m;
1255 static PyObject *__pyx_kp_s_WaveTools_py_Dictionary_key_Wind;
1256 static PyObject *__pyx_kp_s_WaveTools_py_File_s_must_be_give;
1257 static PyObject *__pyx_kp_s_WaveTools_py_Found_not_consisten;
1258 static PyObject *__pyx_kp_s_WaveTools_py_Location_vector_for;
1259 static PyObject *__pyx_kp_s_WaveTools_py_Need_to_define_Ycoe;
1260 static PyObject *__pyx_kp_s_WaveTools_py_No_phase_array_is_g;
1261 static PyObject *__pyx_kp_s_WaveTools_py_Not_constant_sampli;
1262 static PyObject *__pyx_kp_s_WaveTools_py_Overlap_entry_in_wi;
1263 static PyObject *__pyx_kp_s_WaveTools_py_Parameters_passed_i;
1264 static PyObject *__pyx_kp_s_WaveTools_py_Phase_array_must_ha;
1265 static PyObject *__pyx_kp_s_WaveTools_py_Reading_spectra_No;
1266 static PyObject *__pyx_kp_s_WaveTools_py_Reading_timeseries;
1267 static PyObject *__pyx_kp_s_WaveTools_py_Reconstruction_is_e;
1268 static PyObject *__pyx_kp_s_WaveTools_py_Set_parameters_for;
1269 static PyObject *__pyx_kp_s_WaveTools_py_Timeseries_file_s_m;
1270 static PyObject *__pyx_kp_s_WaveTools_py_Using_s_windows_for;
1271 static PyObject *__pyx_kp_s_WaveTools_py_Wavelenght_is_not_d;
1272 static PyObject *__pyx_kp_s_WaveTools_py_Window_handover_is;
1273 static PyObject *__pyx_kp_s_WaveTools_py_Wrong_function_type;
1274 static PyObject *__pyx_kp_s_WaveTools_py_meanVelocity_should;
1275 static PyObject *__pyx_kp_s_WaveTools_py_performing_a_direct;
1276 static PyObject *__pyx_kp_s_WaveTools_py_performing_series_d;
1277 static PyObject *__pyx_kp_s_WaveTools_py_phi_argument_must_b;
1278 static PyObject *__pyx_kp_s_WaveTools_py_phi_in_DirectionalW;
1279 static PyObject *__pyx_kp_s_Wave_direction_is_not_perpendicu;
1280 static PyObject *__pyx_kp_s_Wavetools_py_Provide_valid_depth;
1281 static PyObject *__pyx_kp_s_Wavetools_py_Stopping_simulation;
1282 static PyObject *__pyx_n_s_Window;
1283 static PyObject *__pyx_kp_s_Wrong_wavetype_given_Valid_wavet;
1284 static PyObject *__pyx_n_s_Y;
1285 static PyObject *__pyx_n_s_Ycoeff;
1286 static PyObject *__pyx_n_s_Z;
1287 static PyObject *__pyx_kp_s__82;
1288 static PyObject *__pyx_n_s_a;
1289 static PyObject *__pyx_n_s_aa;
1290 static PyObject *__pyx_n_s_ai;
1291 static PyObject *__pyx_n_s_aiDirs;
1292 static PyObject *__pyx_n_s_aiM;
1293 static PyObject *__pyx_n_s_amp;
1294 static PyObject *__pyx_n_s_amplitude;
1295 static PyObject *__pyx_n_s_append;
1296 static PyObject *__pyx_n_s_array;
1297 static PyObject *__pyx_n_s_bandFactor;
1298 static PyObject *__pyx_n_s_bj;
1299 static PyObject *__pyx_n_s_close;
1300 static PyObject *__pyx_n_s_cmath;
1301 static PyObject *__pyx_n_s_cos;
1302 static PyObject *__pyx_n_s_cos2s;
1303 static PyObject *__pyx_n_s_cosh;
1304 static PyObject *__pyx_n_s_costap;
1305 static PyObject *__pyx_kp_s_csv;
1306 static PyObject *__pyx_n_s_cut;
1307 static PyObject *__pyx_n_s_cutoff;
1308 static PyObject *__pyx_n_s_d;
1309 static PyObject *__pyx_n_s_decomp;
1310 static PyObject *__pyx_n_s_decompose_tseries;
1311 static PyObject *__pyx_n_s_decompose_window;
1312 static PyObject *__pyx_n_s_delimiter;
1313 static PyObject *__pyx_n_s_depth;
1314 static PyObject *__pyx_n_s_df;
1315 static PyObject *__pyx_n_s_diff;
1316 static PyObject *__pyx_n_s_dirCheck;
1317 static PyObject *__pyx_n_s_dircheck;
1318 static PyObject *__pyx_n_s_directions;
1319 static PyObject *__pyx_n_s_dispersion;
1320 static PyObject *__pyx_n_s_doInterp;
1321 static PyObject *__pyx_n_s_doc;
1322 static PyObject *__pyx_n_s_dt;
1323 static PyObject *__pyx_n_s_dt_temp;
1324 static PyObject *__pyx_n_s_dth;
1325 static PyObject *__pyx_n_s_eta;
1326 static PyObject *__pyx_n_s_etaDirect;
1327 static PyObject *__pyx_n_s_etaWindow;
1328 static PyObject *__pyx_n_s_eta_mode;
1329 static PyObject *__pyx_n_s_exit;
1330 static PyObject *__pyx_n_s_exp;
1331 static PyObject *__pyx_n_s_f;
1332 static PyObject *__pyx_n_s_f0;
1333 static PyObject *__pyx_n_s_fft;
1334 static PyObject *__pyx_n_s_fft_x;
1335 static PyObject *__pyx_n_s_fftfreq;
1336 static PyObject *__pyx_n_s_fi;
1337 static PyObject *__pyx_n_s_fid;
1338 static PyObject *__pyx_n_s_filetype;
1339 static PyObject *__pyx_n_s_fim;
1340 static PyObject *__pyx_n_s_fim_tmp;
1341 static PyObject *__pyx_n_s_findWindow;
1342 static PyObject *__pyx_n_s_fmax;
1343 static PyObject *__pyx_n_s_fmin;
1344 static PyObject *__pyx_n_s_fp;
1345 static PyObject *__pyx_n_s_freq;
1346 static PyObject *__pyx_n_s_fun;
1347 static PyObject *__pyx_n_s_func;
1348 static PyObject *__pyx_n_s_funcName;
1349 static PyObject *__pyx_n_s_funcNames;
1350 static PyObject *__pyx_n_s_func_ret;
1351 static PyObject *__pyx_n_s_g;
1352 static PyObject *__pyx_n_s_gAbs;
1353 static PyObject *__pyx_n_s_gamma;
1354 static PyObject *__pyx_n_s_handover;
1355 static PyObject *__pyx_kp_s_home_cekees_proteus_proteus_Wav;
1356 static PyObject *__pyx_n_s_i;
1357 static PyObject *__pyx_n_s_iend;
1358 static PyObject *__pyx_n_s_ii;
1359 static PyObject *__pyx_n_s_imax;
1360 static PyObject *__pyx_n_s_imin;
1361 static PyObject *__pyx_n_s_import;
1362 static PyObject *__pyx_n_s_init;
1363 static PyObject *__pyx_n_s_interp;
1364 static PyObject *__pyx_n_s_ipeak;
1365 static PyObject *__pyx_n_s_ispan1;
1366 static PyObject *__pyx_n_s_ispan2;
1367 static PyObject *__pyx_n_s_jj;
1368 static PyObject *__pyx_n_s_k;
1369 static PyObject *__pyx_n_s_kAbs;
1370 static PyObject *__pyx_n_s_kDir;
1371 static PyObject *__pyx_n_s_kDirM;
1372 static PyObject *__pyx_n_s_kDiri;
1373 static PyObject *__pyx_n_s_kdir;
1374 static PyObject *__pyx_n_s_ki;
1375 static PyObject *__pyx_n_s_kiM;
1376 static PyObject *__pyx_n_s_kk;
1377 static PyObject *__pyx_n_s_kmode;
1378 static PyObject *__pyx_n_s_knownWaveTypes;
1379 static PyObject *__pyx_n_s_l;
1380 static PyObject *__pyx_n_s_level;
1381 static PyObject *__pyx_n_s_linspace;
1382 static PyObject *__pyx_n_s_loadExistingFunction;
1383 static PyObject *__pyx_n_s_loadtxt;
1384 static PyObject *__pyx_n_s_log;
1385 static PyObject *__pyx_n_s_logEvent;
1386 static PyObject *__pyx_n_s_main;
1387 static PyObject *__pyx_n_s_math;
1388 static PyObject *__pyx_n_s_max;
1389 static PyObject *__pyx_n_s_mean;
1390 static PyObject *__pyx_n_s_meanVelocity;
1391 static PyObject *__pyx_n_s_metaclass;
1392 static PyObject *__pyx_n_s_mitsuyasu;
1393 static PyObject *__pyx_n_s_module;
1394 static PyObject *__pyx_n_s_mwl;
1395 static PyObject *__pyx_n_s_name;
1396 static PyObject *__pyx_n_s_ncols;
1397 static PyObject *__pyx_n_s_nfft;
1398 static PyObject *__pyx_n_s_niter;
1399 static PyObject *__pyx_n_s_nn;
1400 static PyObject *__pyx_n_s_normIntegral;
1401 static PyObject *__pyx_n_s_np;
1402 static PyObject *__pyx_n_s_npoints;
1403 static PyObject *__pyx_n_s_numpy;
1404 static PyObject *__pyx_n_s_omega;
1405 static PyObject *__pyx_n_s_omega0;
1406 static PyObject *__pyx_n_s_omegaM;
1407 static PyObject *__pyx_n_s_ones;
1408 static PyObject *__pyx_n_s_open;
1409 static PyObject *__pyx_n_s_overlap;
1410 static PyObject *__pyx_n_s_period;
1411 static PyObject *__pyx_n_s_phase;
1412 static PyObject *__pyx_n_s_phi;
1413 static PyObject *__pyx_n_s_phi0;
1414 static PyObject *__pyx_n_s_phiDirs;
1415 static PyObject *__pyx_n_s_phiM;
1416 static PyObject *__pyx_n_s_phiSymm;
1417 static PyObject *__pyx_n_s_pi;
1418 static PyObject *__pyx_n_s_pp;
1419 static PyObject *__pyx_n_s_prepare;
1420 static PyObject *__pyx_n_s_qualname;
1421 static PyObject *__pyx_n_s_r;
1422 static PyObject *__pyx_n_s_rand;
1423 static PyObject *__pyx_n_s_random;
1424 static PyObject *__pyx_n_s_range;
1425 static PyObject *__pyx_n_s_real;
1426 static PyObject *__pyx_n_s_rec_direct;
1427 static PyObject *__pyx_n_s_reduceToIntervals;
1428 static PyObject *__pyx_n_s_results;
1429 static PyObject *__pyx_n_s_returnRectangles;
1430 static PyObject *__pyx_n_s_returnRectangles3D;
1431 static PyObject *__pyx_n_s_rotation3D;
1432 static PyObject *__pyx_n_s_rr;
1433 static PyObject *__pyx_n_s_s;
1434 static PyObject *__pyx_n_s_self;
1435 static PyObject *__pyx_n_s_setDirVector;
1436 static PyObject *__pyx_n_s_setVertDir;
1437 static PyObject *__pyx_n_s_setup;
1438 static PyObject *__pyx_n_s_shape;
1439 static PyObject *__pyx_n_s_sigma;
1440 static PyObject *__pyx_n_s_sigmaReturn;
1441 static PyObject *__pyx_n_s_sin;
1442 static PyObject *__pyx_n_s_sinh;
1443 static PyObject *__pyx_n_s_skiprows;
1444 static PyObject *__pyx_n_s_smax;
1445 static PyObject *__pyx_n_s_span;
1446 static PyObject *__pyx_n_s_spec_fun;
1447 static PyObject *__pyx_n_s_spectName;
1448 static PyObject *__pyx_n_s_spectral_params;
1449 static PyObject *__pyx_n_s_spreadName;
1450 static PyObject *__pyx_n_s_spread_fun;
1451 static PyObject *__pyx_n_s_spread_params;
1452 static PyObject *__pyx_n_s_sqrt;
1453 static PyObject *__pyx_n_s_sum;
1454 static PyObject *__pyx_n_s_sys;
1455 static PyObject *__pyx_n_s_t;
1456 static PyObject *__pyx_n_s_t0;
1457 static PyObject *__pyx_n_s_tanh;
1458 static PyObject *__pyx_n_s_tdata;
1459 static PyObject *__pyx_n_s_temp_array;
1460 static PyObject *__pyx_n_s_term;
1461 static PyObject *__pyx_n_s_test;
1462 static PyObject *__pyx_n_s_tfirst;
1463 static PyObject *__pyx_n_s_th;
1464 static PyObject *__pyx_n_s_theta;
1465 static PyObject *__pyx_n_s_theta_m;
1466 static PyObject *__pyx_n_s_thetas;
1467 static PyObject *__pyx_n_s_time;
1468 static PyObject *__pyx_n_s_timeSeriesFile;
1469 static PyObject *__pyx_n_s_timeSeriesPosition;
1470 static PyObject *__pyx_n_s_time_temp;
1471 static PyObject *__pyx_n_s_tlast;
1472 static PyObject *__pyx_n_s_tlength;
1473 static PyObject *__pyx_n_s_tma;
1474 static PyObject *__pyx_n_s_tolist;
1475 static PyObject *__pyx_n_s_tophat;
1476 static PyObject *__pyx_n_s_tstart;
1477 static PyObject *__pyx_n_s_tt;
1478 static PyObject *__pyx_kp_s_txt;
1479 static PyObject *__pyx_n_s_u;
1480 static PyObject *__pyx_n_s_uDirect;
1481 static PyObject *__pyx_n_s_uWindow;
1482 static PyObject *__pyx_n_s_v1;
1483 static PyObject *__pyx_n_s_v2;
1484 static PyObject *__pyx_n_s_vDir;
1485 static PyObject *__pyx_n_s_validFunctions;
1486 static PyObject *__pyx_n_s_validSpectra;
1487 static PyObject *__pyx_n_s_validSpread;
1488 static PyObject *__pyx_n_s_validWindows;
1489 static PyObject *__pyx_n_s_vector;
1490 static PyObject *__pyx_n_s_vel_mode;
1491 static PyObject *__pyx_n_s_w;
1492 static PyObject *__pyx_n_s_w_aux;
1493 static PyObject *__pyx_n_s_waveDir;
1494 static PyObject *__pyx_n_s_waveDir0;
1495 static PyObject *__pyx_n_s_waveDirs;
1496 static PyObject *__pyx_n_s_waveHeight;
1497 static PyObject *__pyx_n_s_waveType;
1498 static PyObject *__pyx_n_s_wavelength;
1499 static PyObject *__pyx_n_s_where;
1500 static PyObject *__pyx_n_s_wind;
1501 static PyObject *__pyx_n_s_wind_filt;
1502 static PyObject *__pyx_n_s_windowName;
1503 static PyObject *__pyx_n_s_window_params;
1504 static PyObject *__pyx_n_s_windows_handover;
1505 static PyObject *__pyx_n_s_windows_rec;
1506 static PyObject *__pyx_n_s_wmode;
1507 static PyObject *__pyx_n_s_ww;
1508 static PyObject *__pyx_n_s_x;
1509 static PyObject *__pyx_n_s_x0;
1510 static PyObject *__pyx_n_s_x1;
1511 static PyObject *__pyx_n_s_y;
1512 static PyObject *__pyx_n_s_y0;
1513 static PyObject *__pyx_n_s_z0;
1514 static PyObject *__pyx_n_s_zeros;
1515 static PyObject *__pyx_n_s_zip;
1516 static PyObject *__pyx_pf_9WaveTools_loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions); /* proto */
1517 static PyObject *__pyx_pf_9WaveTools_2setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g); /* proto */
1518 static PyObject *__pyx_pf_9WaveTools_4setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector); /* proto */
1519 static PyObject *__pyx_pf_9WaveTools_6dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2); /* proto */
1520 static PyObject *__pyx_pf_9WaveTools_8reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df); /* proto */
1521 static PyObject *__pyx_pf_9WaveTools_10returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x); /* proto */
1522 static PyObject *__pyx_pf_9WaveTools_12returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y); /* proto */
1523 static PyObject *__pyx_pf_9WaveTools_14normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Sint, PyObject *__pyx_v_th); /* proto */
1524 static PyObject *__pyx_pf_9WaveTools_16eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude); /* proto */
1525 static PyObject *__pyx_pf_9WaveTools_18vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, CYTHON_UNUSED PyObject *__pyx_v_g, PyObject *__pyx_v_vDir); /* proto */
1526 static PyObject *__pyx_pf_9WaveTools_20sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0); /* proto */
1527 static PyObject *__pyx_pf_9WaveTools_22JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth); /* proto */
1528 static PyObject *__pyx_pf_9WaveTools_24PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs); /* proto */
1529 static PyObject *__pyx_pf_9WaveTools_26cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s); /* proto */
1530 static PyObject *__pyx_pf_9WaveTools_28mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax); /* proto */
1531 static PyObject *__pyx_pf_9WaveTools_30dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter); /* proto */
1532 static PyObject *__pyx_pf_9WaveTools_32tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
1533 static PyObject *__pyx_pf_9WaveTools_34costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff); /* proto */
1534 static PyObject *__pyx_pf_9WaveTools_36decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt); /* proto */
1535 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
1536 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0); /* proto */
1537 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1538 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1539 static PyObject *__pyx_pf_9WaveTools_11RandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi); /* proto */
1540 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1541 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1542 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi); /* proto */
1543 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1544 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1545 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm); /* proto */
1546 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1547 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1548 static PyObject *__pyx_pf_9WaveTools_10TimeSeries___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params); /* proto */
1549 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2etaDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1550 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4uDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1551 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6findWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_t); /* proto */
1552 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8etaWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1553 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10uWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t); /* proto */
1554 static PyObject *__pyx_float_0_;
1555 static PyObject *__pyx_float_1_;
1556 static PyObject *__pyx_float_2_;
1557 static PyObject *__pyx_float_4_;
1558 static PyObject *__pyx_float_0_1;
1559 static PyObject *__pyx_float_0_5;
1560 static PyObject *__pyx_float_0_9;
1561 static PyObject *__pyx_float_1_1;
1562 static PyObject *__pyx_float_1_9;
1563 static PyObject *__pyx_float_2_0;
1564 static PyObject *__pyx_float_3_3;
1565 static PyObject *__pyx_float_0_07;
1566 static PyObject *__pyx_float_0_09;
1567 static PyObject *__pyx_float_0_23;
1568 static PyObject *__pyx_float_0_25;
1569 static PyObject *__pyx_float_9_81;
1570 static PyObject *__pyx_float_0_025;
1571 static PyObject *__pyx_float_0_185;
1572 static PyObject *__pyx_float_1_094;
1573 static PyObject *__pyx_float_1eneg_10;
1574 static PyObject *__pyx_float_0_0336;
1575 static PyObject *__pyx_float_0_0624;
1576 static PyObject *__pyx_float_0_01915;
1577 static PyObject *__pyx_float_neg_2_5;
1578 static PyObject *__pyx_float_neg_1_25;
1579 static PyObject *__pyx_int_0;
1580 static PyObject *__pyx_int_1;
1581 static PyObject *__pyx_int_2;
1582 static PyObject *__pyx_int_3;
1583 static PyObject *__pyx_int_4;
1584 static PyObject *__pyx_int_5;
1585 static PyObject *__pyx_int_10;
1586 static PyObject *__pyx_int_100;
1587 static PyObject *__pyx_int_1000;
1588 static PyObject *__pyx_int_neg_1;
1589 static PyObject *__pyx_int_neg_4;
1590 static PyObject *__pyx_tuple_;
1591 static PyObject *__pyx_slice__4;
1592 static PyObject *__pyx_slice__5;
1593 static PyObject *__pyx_slice__6;
1594 static PyObject *__pyx_slice__7;
1595 static PyObject *__pyx_slice__8;
1596 static PyObject *__pyx_slice__9;
1597 static PyObject *__pyx_tuple__2;
1598 static PyObject *__pyx_tuple__3;
1599 static PyObject *__pyx_slice__10;
1600 static PyObject *__pyx_slice__11;
1601 static PyObject *__pyx_slice__13;
1602 static PyObject *__pyx_slice__14;
1603 static PyObject *__pyx_slice__16;
1604 static PyObject *__pyx_slice__17;
1605 static PyObject *__pyx_slice__19;
1606 static PyObject *__pyx_slice__20;
1607 static PyObject *__pyx_slice__22;
1608 static PyObject *__pyx_slice__23;
1609 static PyObject *__pyx_slice__24;
1610 static PyObject *__pyx_slice__25;
1611 static PyObject *__pyx_slice__26;
1612 static PyObject *__pyx_slice__27;
1613 static PyObject *__pyx_slice__31;
1614 static PyObject *__pyx_slice__33;
1615 static PyObject *__pyx_slice__34;
1616 static PyObject *__pyx_slice__36;
1617 static PyObject *__pyx_slice__50;
1618 static PyObject *__pyx_slice__51;
1619 static PyObject *__pyx_slice__56;
1620 static PyObject *__pyx_slice__57;
1621 static PyObject *__pyx_slice__59;
1622 static PyObject *__pyx_slice__62;
1623 static PyObject *__pyx_slice__64;
1624 static PyObject *__pyx_slice__66;
1625 static PyObject *__pyx_slice__67;
1626 static PyObject *__pyx_slice__68;
1627 static PyObject *__pyx_slice__71;
1628 static PyObject *__pyx_slice__72;
1629 static PyObject *__pyx_slice__74;
1630 static PyObject *__pyx_slice__75;
1631 static PyObject *__pyx_slice__76;
1632 static PyObject *__pyx_slice__77;
1633 static PyObject *__pyx_slice__80;
1634 static PyObject *__pyx_slice__83;
1635 static PyObject *__pyx_slice__86;
1636 static PyObject *__pyx_slice__90;
1637 static PyObject *__pyx_slice__92;
1638 static PyObject *__pyx_slice__95;
1639 static PyObject *__pyx_slice__96;
1640 static PyObject *__pyx_tuple__12;
1641 static PyObject *__pyx_tuple__15;
1642 static PyObject *__pyx_tuple__18;
1643 static PyObject *__pyx_tuple__21;
1644 static PyObject *__pyx_tuple__28;
1645 static PyObject *__pyx_tuple__29;
1646 static PyObject *__pyx_tuple__30;
1647 static PyObject *__pyx_tuple__32;
1648 static PyObject *__pyx_tuple__35;
1649 static PyObject *__pyx_tuple__37;
1650 static PyObject *__pyx_tuple__38;
1651 static PyObject *__pyx_tuple__39;
1652 static PyObject *__pyx_tuple__40;
1653 static PyObject *__pyx_tuple__41;
1654 static PyObject *__pyx_tuple__42;
1655 static PyObject *__pyx_tuple__43;
1656 static PyObject *__pyx_tuple__44;
1657 static PyObject *__pyx_tuple__45;
1658 static PyObject *__pyx_tuple__46;
1659 static PyObject *__pyx_tuple__47;
1660 static PyObject *__pyx_tuple__48;
1661 static PyObject *__pyx_tuple__49;
1662 static PyObject *__pyx_tuple__52;
1663 static PyObject *__pyx_tuple__53;
1664 static PyObject *__pyx_tuple__54;
1665 static PyObject *__pyx_tuple__55;
1666 static PyObject *__pyx_tuple__58;
1667 static PyObject *__pyx_tuple__60;
1668 static PyObject *__pyx_tuple__61;
1669 static PyObject *__pyx_tuple__63;
1670 static PyObject *__pyx_tuple__65;
1671 static PyObject *__pyx_tuple__69;
1672 static PyObject *__pyx_tuple__70;
1673 static PyObject *__pyx_tuple__73;
1674 static PyObject *__pyx_tuple__78;
1675 static PyObject *__pyx_tuple__79;
1676 static PyObject *__pyx_tuple__81;
1677 static PyObject *__pyx_tuple__84;
1678 static PyObject *__pyx_tuple__85;
1679 static PyObject *__pyx_tuple__87;
1680 static PyObject *__pyx_tuple__88;
1681 static PyObject *__pyx_tuple__89;
1682 static PyObject *__pyx_tuple__91;
1683 static PyObject *__pyx_tuple__93;
1684 static PyObject *__pyx_tuple__94;
1685 static PyObject *__pyx_tuple__97;
1686 static PyObject *__pyx_tuple__98;
1687 static PyObject *__pyx_tuple__99;
1688 static PyObject *__pyx_slice__113;
1689 static PyObject *__pyx_slice__115;
1690 static PyObject *__pyx_slice__117;
1691 static PyObject *__pyx_slice__119;
1692 static PyObject *__pyx_slice__121;
1693 static PyObject *__pyx_slice__122;
1694 static PyObject *__pyx_tuple__100;
1695 static PyObject *__pyx_tuple__101;
1696 static PyObject *__pyx_tuple__102;
1697 static PyObject *__pyx_tuple__103;
1698 static PyObject *__pyx_tuple__104;
1699 static PyObject *__pyx_tuple__105;
1700 static PyObject *__pyx_tuple__106;
1701 static PyObject *__pyx_tuple__107;
1702 static PyObject *__pyx_tuple__108;
1703 static PyObject *__pyx_tuple__109;
1704 static PyObject *__pyx_tuple__110;
1705 static PyObject *__pyx_tuple__111;
1706 static PyObject *__pyx_tuple__112;
1707 static PyObject *__pyx_tuple__114;
1708 static PyObject *__pyx_tuple__116;
1709 static PyObject *__pyx_tuple__118;
1710 static PyObject *__pyx_tuple__120;
1711 static PyObject *__pyx_tuple__123;
1712 static PyObject *__pyx_tuple__124;
1713 static PyObject *__pyx_tuple__125;
1714 static PyObject *__pyx_tuple__127;
1715 static PyObject *__pyx_tuple__129;
1716 static PyObject *__pyx_tuple__131;
1717 static PyObject *__pyx_tuple__133;
1718 static PyObject *__pyx_tuple__135;
1719 static PyObject *__pyx_tuple__137;
1720 static PyObject *__pyx_tuple__139;
1721 static PyObject *__pyx_tuple__141;
1722 static PyObject *__pyx_tuple__143;
1723 static PyObject *__pyx_tuple__145;
1724 static PyObject *__pyx_tuple__147;
1725 static PyObject *__pyx_tuple__149;
1726 static PyObject *__pyx_tuple__151;
1727 static PyObject *__pyx_tuple__153;
1728 static PyObject *__pyx_tuple__155;
1729 static PyObject *__pyx_tuple__157;
1730 static PyObject *__pyx_tuple__159;
1731 static PyObject *__pyx_tuple__161;
1732 static PyObject *__pyx_tuple__163;
1733 static PyObject *__pyx_tuple__165;
1734 static PyObject *__pyx_tuple__167;
1735 static PyObject *__pyx_tuple__169;
1736 static PyObject *__pyx_tuple__171;
1737 static PyObject *__pyx_tuple__172;
1738 static PyObject *__pyx_tuple__174;
1739 static PyObject *__pyx_tuple__176;
1740 static PyObject *__pyx_tuple__178;
1741 static PyObject *__pyx_tuple__180;
1742 static PyObject *__pyx_tuple__182;
1743 static PyObject *__pyx_tuple__184;
1744 static PyObject *__pyx_tuple__185;
1745 static PyObject *__pyx_tuple__187;
1746 static PyObject *__pyx_tuple__189;
1747 static PyObject *__pyx_tuple__191;
1748 static PyObject *__pyx_tuple__192;
1749 static PyObject *__pyx_tuple__194;
1750 static PyObject *__pyx_tuple__196;
1751 static PyObject *__pyx_tuple__198;
1752 static PyObject *__pyx_tuple__200;
1753 static PyObject *__pyx_codeobj__126;
1754 static PyObject *__pyx_codeobj__128;
1755 static PyObject *__pyx_codeobj__130;
1756 static PyObject *__pyx_codeobj__132;
1757 static PyObject *__pyx_codeobj__134;
1758 static PyObject *__pyx_codeobj__136;
1759 static PyObject *__pyx_codeobj__138;
1760 static PyObject *__pyx_codeobj__140;
1761 static PyObject *__pyx_codeobj__142;
1762 static PyObject *__pyx_codeobj__144;
1763 static PyObject *__pyx_codeobj__146;
1764 static PyObject *__pyx_codeobj__148;
1765 static PyObject *__pyx_codeobj__150;
1766 static PyObject *__pyx_codeobj__152;
1767 static PyObject *__pyx_codeobj__154;
1768 static PyObject *__pyx_codeobj__156;
1769 static PyObject *__pyx_codeobj__158;
1770 static PyObject *__pyx_codeobj__160;
1771 static PyObject *__pyx_codeobj__162;
1772 static PyObject *__pyx_codeobj__164;
1773 static PyObject *__pyx_codeobj__166;
1774 static PyObject *__pyx_codeobj__168;
1775 static PyObject *__pyx_codeobj__170;
1776 static PyObject *__pyx_codeobj__173;
1777 static PyObject *__pyx_codeobj__175;
1778 static PyObject *__pyx_codeobj__177;
1779 static PyObject *__pyx_codeobj__179;
1780 static PyObject *__pyx_codeobj__181;
1781 static PyObject *__pyx_codeobj__183;
1782 static PyObject *__pyx_codeobj__186;
1783 static PyObject *__pyx_codeobj__188;
1784 static PyObject *__pyx_codeobj__190;
1785 static PyObject *__pyx_codeobj__193;
1786 static PyObject *__pyx_codeobj__195;
1787 static PyObject *__pyx_codeobj__197;
1788 static PyObject *__pyx_codeobj__199;
1789 static PyObject *__pyx_codeobj__201;
1790 
1791 /* "WaveTools.pyx":21
1792  *
1793  *
1794  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
1795  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
1796  * param: funcName : function name in form of string under consideration
1797  */
1798 
1799 /* Python wrapper */
1800 static PyObject *__pyx_pw_9WaveTools_1loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
1801 static char __pyx_doc_9WaveTools_loadExistingFunction[] = "loadExistingFunction(funcName, validFunctions)\n Checks if a function name is present in a list of known functions, returns system exit if not present\n param: funcName : function name in form of string under consideration\n param: validFunctions: list of valid functions objects (not names in strings)\n\n ";
1802 static PyMethodDef __pyx_mdef_9WaveTools_1loadExistingFunction = {"loadExistingFunction", (PyCFunction)__pyx_pw_9WaveTools_1loadExistingFunction, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_loadExistingFunction};
1803 static PyObject *__pyx_pw_9WaveTools_1loadExistingFunction(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
1804  PyObject *__pyx_v_funcName = 0;
1805  PyObject *__pyx_v_validFunctions = 0;
1806  int __pyx_lineno = 0;
1807  const char *__pyx_filename = NULL;
1808  int __pyx_clineno = 0;
1809  PyObject *__pyx_r = 0;
1810  __Pyx_RefNannyDeclarations
1811  __Pyx_RefNannySetupContext("loadExistingFunction (wrapper)", 0);
1812  {
1813  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_funcName,&__pyx_n_s_validFunctions,0};
1814  PyObject* values[2] = {0,0};
1815  if (unlikely(__pyx_kwds)) {
1816  Py_ssize_t kw_args;
1817  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
1818  switch (pos_args) {
1819  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1820  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1821  case 0: break;
1822  default: goto __pyx_L5_argtuple_error;
1823  }
1824  kw_args = PyDict_Size(__pyx_kwds);
1825  switch (pos_args) {
1826  case 0:
1827  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_funcName)) != 0)) kw_args--;
1828  else goto __pyx_L5_argtuple_error;
1829  case 1:
1830  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_validFunctions)) != 0)) kw_args--;
1831  else {
1832  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1833  }
1834  }
1835  if (unlikely(kw_args > 0)) {
1836  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "loadExistingFunction") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1837  }
1838  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
1839  goto __pyx_L5_argtuple_error;
1840  } else {
1841  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
1842  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
1843  }
1844  __pyx_v_funcName = values[0];
1845  __pyx_v_validFunctions = values[1];
1846  }
1847  goto __pyx_L4_argument_unpacking_done;
1848  __pyx_L5_argtuple_error:;
1849  __Pyx_RaiseArgtupleInvalid("loadExistingFunction", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
1850  __pyx_L3_error:;
1851  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
1852  __Pyx_RefNannyFinishContext();
1853  return NULL;
1854  __pyx_L4_argument_unpacking_done:;
1855  __pyx_r = __pyx_pf_9WaveTools_loadExistingFunction(__pyx_self, __pyx_v_funcName, __pyx_v_validFunctions);
1856 
1857  /* function exit code */
1858  __Pyx_RefNannyFinishContext();
1859  return __pyx_r;
1860 }
1861 
1862 static PyObject *__pyx_pf_9WaveTools_loadExistingFunction(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_funcName, PyObject *__pyx_v_validFunctions) {
1863  PyObject *__pyx_v_funcNames = NULL;
1864  PyObject *__pyx_v_func = NULL;
1865  PyObject *__pyx_v_func_ret = NULL;
1866  PyObject *__pyx_r = NULL;
1867  __Pyx_RefNannyDeclarations
1868  PyObject *__pyx_t_1 = NULL;
1869  Py_ssize_t __pyx_t_2;
1870  PyObject *(*__pyx_t_3)(PyObject *);
1871  PyObject *__pyx_t_4 = NULL;
1872  int __pyx_t_5;
1873  PyObject *__pyx_t_6 = NULL;
1874  int __pyx_t_7;
1875  int __pyx_t_8;
1876  PyObject *__pyx_t_9 = NULL;
1877  int __pyx_lineno = 0;
1878  const char *__pyx_filename = NULL;
1879  int __pyx_clineno = 0;
1880  __Pyx_RefNannySetupContext("loadExistingFunction", 0);
1881 
1882  /* "WaveTools.pyx":27
1883  *
1884  * """
1885  * funcNames = [] # <<<<<<<<<<<<<<
1886  * for func in validFunctions:
1887  * funcNames.append(func.__name__)
1888  */
1889  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1890  __Pyx_GOTREF(__pyx_t_1);
1891  __pyx_v_funcNames = ((PyObject*)__pyx_t_1);
1892  __pyx_t_1 = 0;
1893 
1894  /* "WaveTools.pyx":28
1895  * """
1896  * funcNames = []
1897  * for func in validFunctions: # <<<<<<<<<<<<<<
1898  * funcNames.append(func.__name__)
1899  * if func.__name__ == funcName:
1900  */
1901  if (likely(PyList_CheckExact(__pyx_v_validFunctions)) || PyTuple_CheckExact(__pyx_v_validFunctions)) {
1902  __pyx_t_1 = __pyx_v_validFunctions; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
1903  __pyx_t_3 = NULL;
1904  } else {
1905  __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_validFunctions); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1906  __Pyx_GOTREF(__pyx_t_1);
1907  __pyx_t_3 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1908  }
1909  for (;;) {
1910  if (likely(!__pyx_t_3)) {
1911  if (likely(PyList_CheckExact(__pyx_t_1))) {
1912  if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
1913  #if CYTHON_COMPILING_IN_CPYTHON
1914  __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1915  #else
1916  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1917  __Pyx_GOTREF(__pyx_t_4);
1918  #endif
1919  } else {
1920  if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
1921  #if CYTHON_COMPILING_IN_CPYTHON
1922  __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1923  #else
1924  __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1925  __Pyx_GOTREF(__pyx_t_4);
1926  #endif
1927  }
1928  } else {
1929  __pyx_t_4 = __pyx_t_3(__pyx_t_1);
1930  if (unlikely(!__pyx_t_4)) {
1931  PyObject* exc_type = PyErr_Occurred();
1932  if (exc_type) {
1933  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
1934  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1935  }
1936  break;
1937  }
1938  __Pyx_GOTREF(__pyx_t_4);
1939  }
1940  __Pyx_XDECREF_SET(__pyx_v_func, __pyx_t_4);
1941  __pyx_t_4 = 0;
1942 
1943  /* "WaveTools.pyx":29
1944  * funcNames = []
1945  * for func in validFunctions:
1946  * funcNames.append(func.__name__) # <<<<<<<<<<<<<<
1947  * if func.__name__ == funcName:
1948  * func_ret = func
1949  */
1950  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1951  __Pyx_GOTREF(__pyx_t_4);
1952  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_funcNames, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1953  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1954 
1955  /* "WaveTools.pyx":30
1956  * for func in validFunctions:
1957  * funcNames.append(func.__name__)
1958  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
1959  * func_ret = func
1960  * if funcName not in funcNames:
1961  */
1962  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_func, __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1963  __Pyx_GOTREF(__pyx_t_4);
1964  __pyx_t_6 = PyObject_RichCompare(__pyx_t_4, __pyx_v_funcName, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1965  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
1966  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
1967  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
1968  if (__pyx_t_7) {
1969 
1970  /* "WaveTools.pyx":31
1971  * funcNames.append(func.__name__)
1972  * if func.__name__ == funcName:
1973  * func_ret = func # <<<<<<<<<<<<<<
1974  * if funcName not in funcNames:
1975  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
1976  */
1977  __Pyx_INCREF(__pyx_v_func);
1978  __Pyx_XDECREF_SET(__pyx_v_func_ret, __pyx_v_func);
1979 
1980  /* "WaveTools.pyx":30
1981  * for func in validFunctions:
1982  * funcNames.append(func.__name__)
1983  * if func.__name__ == funcName: # <<<<<<<<<<<<<<
1984  * func_ret = func
1985  * if funcName not in funcNames:
1986  */
1987  }
1988 
1989  /* "WaveTools.pyx":28
1990  * """
1991  * funcNames = []
1992  * for func in validFunctions: # <<<<<<<<<<<<<<
1993  * funcNames.append(func.__name__)
1994  * if func.__name__ == funcName:
1995  */
1996  }
1997  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
1998 
1999  /* "WaveTools.pyx":32
2000  * if func.__name__ == funcName:
2001  * func_ret = func
2002  * if funcName not in funcNames: # <<<<<<<<<<<<<<
2003  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2004  * sys.exit(1)
2005  */
2006  __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_v_funcName, __pyx_v_funcNames, Py_NE)); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2007  __pyx_t_8 = (__pyx_t_7 != 0);
2008  if (__pyx_t_8) {
2009 
2010  /* "WaveTools.pyx":33
2011  * func_ret = func
2012  * if funcName not in funcNames:
2013  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0) # <<<<<<<<<<<<<<
2014  * sys.exit(1)
2015  * return func_ret
2016  */
2017  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2018  __Pyx_GOTREF(__pyx_t_1);
2019  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2020  __Pyx_GOTREF(__pyx_t_6);
2021  __Pyx_INCREF(__pyx_v_funcName);
2022  __Pyx_GIVEREF(__pyx_v_funcName);
2023  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_funcName);
2024  __Pyx_INCREF(__pyx_v_funcNames);
2025  __Pyx_GIVEREF(__pyx_v_funcNames);
2026  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_funcNames);
2027  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Wrong_function_type, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2028  __Pyx_GOTREF(__pyx_t_4);
2029  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2030  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2031  __Pyx_GOTREF(__pyx_t_6);
2032  __Pyx_GIVEREF(__pyx_t_4);
2033  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
2034  __pyx_t_4 = 0;
2035  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2036  __Pyx_GOTREF(__pyx_t_4);
2037  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2038  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2039  __Pyx_GOTREF(__pyx_t_9);
2040  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2041  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2042  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2043  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2044 
2045  /* "WaveTools.pyx":34
2046  * if funcName not in funcNames:
2047  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2048  * sys.exit(1) # <<<<<<<<<<<<<<
2049  * return func_ret
2050  *
2051  */
2052  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2053  __Pyx_GOTREF(__pyx_t_9);
2054  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2055  __Pyx_GOTREF(__pyx_t_4);
2056  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2057  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2058  __Pyx_GOTREF(__pyx_t_9);
2059  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2060  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
2061 
2062  /* "WaveTools.pyx":32
2063  * if func.__name__ == funcName:
2064  * func_ret = func
2065  * if funcName not in funcNames: # <<<<<<<<<<<<<<
2066  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2067  * sys.exit(1)
2068  */
2069  }
2070 
2071  /* "WaveTools.pyx":35
2072  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
2073  * sys.exit(1)
2074  * return func_ret # <<<<<<<<<<<<<<
2075  *
2076  *
2077  */
2078  __Pyx_XDECREF(__pyx_r);
2079  if (unlikely(!__pyx_v_func_ret)) { __Pyx_RaiseUnboundLocalError("func_ret"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
2080  __Pyx_INCREF(__pyx_v_func_ret);
2081  __pyx_r = __pyx_v_func_ret;
2082  goto __pyx_L0;
2083 
2084  /* "WaveTools.pyx":21
2085  *
2086  *
2087  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
2088  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
2089  * param: funcName : function name in form of string under consideration
2090  */
2091 
2092  /* function exit code */
2093  __pyx_L1_error:;
2094  __Pyx_XDECREF(__pyx_t_1);
2095  __Pyx_XDECREF(__pyx_t_4);
2096  __Pyx_XDECREF(__pyx_t_6);
2097  __Pyx_XDECREF(__pyx_t_9);
2098  __Pyx_AddTraceback("WaveTools.loadExistingFunction", __pyx_clineno, __pyx_lineno, __pyx_filename);
2099  __pyx_r = NULL;
2100  __pyx_L0:;
2101  __Pyx_XDECREF(__pyx_v_funcNames);
2102  __Pyx_XDECREF(__pyx_v_func);
2103  __Pyx_XDECREF(__pyx_v_func_ret);
2104  __Pyx_XGIVEREF(__pyx_r);
2105  __Pyx_RefNannyFinishContext();
2106  return __pyx_r;
2107 }
2108 
2109 /* "WaveTools.pyx":39
2110  *
2111  *
2112  * def setVertDir(g): # <<<<<<<<<<<<<<
2113  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
2114  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2115  */
2116 
2117 /* Python wrapper */
2118 static PyObject *__pyx_pw_9WaveTools_3setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g); /*proto*/
2119 static char __pyx_doc_9WaveTools_2setVertDir[] = "setVertDir(g)\n Sets the unit vector for the vertical direction, opposite to the gravity vector\n param: g : gravitational acceleration vector [L/T^2] (must have 3 components)\n ";
2120 static PyMethodDef __pyx_mdef_9WaveTools_3setVertDir = {"setVertDir", (PyCFunction)__pyx_pw_9WaveTools_3setVertDir, METH_O, __pyx_doc_9WaveTools_2setVertDir};
2121 static PyObject *__pyx_pw_9WaveTools_3setVertDir(PyObject *__pyx_self, PyObject *__pyx_v_g) {
2122  PyObject *__pyx_r = 0;
2123  __Pyx_RefNannyDeclarations
2124  __Pyx_RefNannySetupContext("setVertDir (wrapper)", 0);
2125  __pyx_r = __pyx_pf_9WaveTools_2setVertDir(__pyx_self, ((PyObject *)__pyx_v_g));
2126 
2127  /* function exit code */
2128  __Pyx_RefNannyFinishContext();
2129  return __pyx_r;
2130 }
2131 
2132 static PyObject *__pyx_pf_9WaveTools_2setVertDir(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_g) {
2133  PyObject *__pyx_r = NULL;
2134  __Pyx_RefNannyDeclarations
2135  PyObject *__pyx_t_1 = NULL;
2136  PyObject *__pyx_t_2 = NULL;
2137  PyObject *__pyx_t_3 = NULL;
2138  PyObject *__pyx_t_4 = NULL;
2139  PyObject *__pyx_t_5 = NULL;
2140  PyObject *__pyx_t_6 = NULL;
2141  int __pyx_lineno = 0;
2142  const char *__pyx_filename = NULL;
2143  int __pyx_clineno = 0;
2144  __Pyx_RefNannySetupContext("setVertDir", 0);
2145 
2146  /* "WaveTools.pyx":43
2147  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2148  * """
2149  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2)) # <<<<<<<<<<<<<<
2150  *
2151  * def setDirVector(vector):
2152  */
2153  __Pyx_XDECREF(__pyx_r);
2154  __pyx_t_1 = PyNumber_Negative(__pyx_v_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2155  __Pyx_GOTREF(__pyx_t_1);
2156  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2157  __Pyx_GOTREF(__pyx_t_3);
2158  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2159  __Pyx_GOTREF(__pyx_t_4);
2160  __pyx_t_5 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2161  __Pyx_GOTREF(__pyx_t_5);
2162  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2163  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_g, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2164  __Pyx_GOTREF(__pyx_t_4);
2165  __pyx_t_6 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2166  __Pyx_GOTREF(__pyx_t_6);
2167  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2168  __pyx_t_4 = PyNumber_Add(__pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2169  __Pyx_GOTREF(__pyx_t_4);
2170  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2171  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2172  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_g, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2173  __Pyx_GOTREF(__pyx_t_6);
2174  __pyx_t_5 = PyNumber_Power(__pyx_t_6, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2175  __Pyx_GOTREF(__pyx_t_5);
2176  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2177  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2178  __Pyx_GOTREF(__pyx_t_6);
2179  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2180  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2181  __pyx_t_5 = NULL;
2182  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
2183  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
2184  if (likely(__pyx_t_5)) {
2185  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
2186  __Pyx_INCREF(__pyx_t_5);
2187  __Pyx_INCREF(function);
2188  __Pyx_DECREF_SET(__pyx_t_3, function);
2189  }
2190  }
2191  if (!__pyx_t_5) {
2192  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2193  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2194  __Pyx_GOTREF(__pyx_t_2);
2195  } else {
2196  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2197  __Pyx_GOTREF(__pyx_t_4);
2198  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
2199  __Pyx_GIVEREF(__pyx_t_6);
2200  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
2201  __pyx_t_6 = 0;
2202  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2203  __Pyx_GOTREF(__pyx_t_2);
2204  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2205  }
2206  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2207  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2208  __Pyx_GOTREF(__pyx_t_3);
2209  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2210  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2211  __pyx_r = __pyx_t_3;
2212  __pyx_t_3 = 0;
2213  goto __pyx_L0;
2214 
2215  /* "WaveTools.pyx":39
2216  *
2217  *
2218  * def setVertDir(g): # <<<<<<<<<<<<<<
2219  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
2220  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
2221  */
2222 
2223  /* function exit code */
2224  __pyx_L1_error:;
2225  __Pyx_XDECREF(__pyx_t_1);
2226  __Pyx_XDECREF(__pyx_t_2);
2227  __Pyx_XDECREF(__pyx_t_3);
2228  __Pyx_XDECREF(__pyx_t_4);
2229  __Pyx_XDECREF(__pyx_t_5);
2230  __Pyx_XDECREF(__pyx_t_6);
2231  __Pyx_AddTraceback("WaveTools.setVertDir", __pyx_clineno, __pyx_lineno, __pyx_filename);
2232  __pyx_r = NULL;
2233  __pyx_L0:;
2234  __Pyx_XGIVEREF(__pyx_r);
2235  __Pyx_RefNannyFinishContext();
2236  return __pyx_r;
2237 }
2238 
2239 /* "WaveTools.pyx":45
2240  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
2241  *
2242  * def setDirVector(vector): # <<<<<<<<<<<<<<
2243  * """ Returns the direction of a vector in the form of a unit vector
2244  * param: vector : Any vector with three components
2245  */
2246 
2247 /* Python wrapper */
2248 static PyObject *__pyx_pw_9WaveTools_5setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector); /*proto*/
2249 static char __pyx_doc_9WaveTools_4setDirVector[] = "setDirVector(vector)\n Returns the direction of a vector in the form of a unit vector\n param: vector : Any vector with three components\n ";
2250 static PyMethodDef __pyx_mdef_9WaveTools_5setDirVector = {"setDirVector", (PyCFunction)__pyx_pw_9WaveTools_5setDirVector, METH_O, __pyx_doc_9WaveTools_4setDirVector};
2251 static PyObject *__pyx_pw_9WaveTools_5setDirVector(PyObject *__pyx_self, PyObject *__pyx_v_vector) {
2252  PyObject *__pyx_r = 0;
2253  __Pyx_RefNannyDeclarations
2254  __Pyx_RefNannySetupContext("setDirVector (wrapper)", 0);
2255  __pyx_r = __pyx_pf_9WaveTools_4setDirVector(__pyx_self, ((PyObject *)__pyx_v_vector));
2256 
2257  /* function exit code */
2258  __Pyx_RefNannyFinishContext();
2259  return __pyx_r;
2260 }
2261 
2262 static PyObject *__pyx_pf_9WaveTools_4setDirVector(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_vector) {
2263  PyObject *__pyx_r = NULL;
2264  __Pyx_RefNannyDeclarations
2265  PyObject *__pyx_t_1 = NULL;
2266  PyObject *__pyx_t_2 = NULL;
2267  PyObject *__pyx_t_3 = NULL;
2268  PyObject *__pyx_t_4 = NULL;
2269  PyObject *__pyx_t_5 = NULL;
2270  int __pyx_lineno = 0;
2271  const char *__pyx_filename = NULL;
2272  int __pyx_clineno = 0;
2273  __Pyx_RefNannySetupContext("setDirVector", 0);
2274 
2275  /* "WaveTools.pyx":49
2276  * param: vector : Any vector with three components
2277  * """
2278  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2)) # <<<<<<<<<<<<<<
2279  *
2280  * def dirCheck(v1, v2):
2281  */
2282  __Pyx_XDECREF(__pyx_r);
2283  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2284  __Pyx_GOTREF(__pyx_t_2);
2285  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2286  __Pyx_GOTREF(__pyx_t_3);
2287  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2288  __Pyx_GOTREF(__pyx_t_4);
2289  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2290  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vector, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2291  __Pyx_GOTREF(__pyx_t_3);
2292  __pyx_t_5 = PyNumber_Power(__pyx_t_3, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2293  __Pyx_GOTREF(__pyx_t_5);
2294  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2295  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2296  __Pyx_GOTREF(__pyx_t_3);
2297  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2298  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2299  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_vector, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2300  __Pyx_GOTREF(__pyx_t_5);
2301  __pyx_t_4 = PyNumber_Power(__pyx_t_5, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2302  __Pyx_GOTREF(__pyx_t_4);
2303  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2304  __pyx_t_5 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2305  __Pyx_GOTREF(__pyx_t_5);
2306  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2307  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2308  __pyx_t_4 = NULL;
2309  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
2310  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
2311  if (likely(__pyx_t_4)) {
2312  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
2313  __Pyx_INCREF(__pyx_t_4);
2314  __Pyx_INCREF(function);
2315  __Pyx_DECREF_SET(__pyx_t_2, function);
2316  }
2317  }
2318  if (!__pyx_t_4) {
2319  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2320  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2321  __Pyx_GOTREF(__pyx_t_1);
2322  } else {
2323  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2324  __Pyx_GOTREF(__pyx_t_3);
2325  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
2326  __Pyx_GIVEREF(__pyx_t_5);
2327  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
2328  __pyx_t_5 = 0;
2329  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2330  __Pyx_GOTREF(__pyx_t_1);
2331  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2332  }
2333  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2334  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_v_vector, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2335  __Pyx_GOTREF(__pyx_t_2);
2336  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2337  __pyx_r = __pyx_t_2;
2338  __pyx_t_2 = 0;
2339  goto __pyx_L0;
2340 
2341  /* "WaveTools.pyx":45
2342  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
2343  *
2344  * def setDirVector(vector): # <<<<<<<<<<<<<<
2345  * """ Returns the direction of a vector in the form of a unit vector
2346  * param: vector : Any vector with three components
2347  */
2348 
2349  /* function exit code */
2350  __pyx_L1_error:;
2351  __Pyx_XDECREF(__pyx_t_1);
2352  __Pyx_XDECREF(__pyx_t_2);
2353  __Pyx_XDECREF(__pyx_t_3);
2354  __Pyx_XDECREF(__pyx_t_4);
2355  __Pyx_XDECREF(__pyx_t_5);
2356  __Pyx_AddTraceback("WaveTools.setDirVector", __pyx_clineno, __pyx_lineno, __pyx_filename);
2357  __pyx_r = NULL;
2358  __pyx_L0:;
2359  __Pyx_XGIVEREF(__pyx_r);
2360  __Pyx_RefNannyFinishContext();
2361  return __pyx_r;
2362 }
2363 
2364 /* "WaveTools.pyx":51
2365  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
2366  *
2367  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
2368  * """ Checks if to vectors are vertical and returns system exit if not
2369  * param: v1 : 1st vector [-] with three components
2370  */
2371 
2372 /* Python wrapper */
2373 static PyObject *__pyx_pw_9WaveTools_7dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2374 static char __pyx_doc_9WaveTools_6dirCheck[] = "dirCheck(v1, v2)\n Checks if to vectors are vertical and returns system exit if not\n param: v1 : 1st vector [-] with three components\n param: v2 : 2nd vector [-] with three components\n ";
2375 static PyMethodDef __pyx_mdef_9WaveTools_7dirCheck = {"dirCheck", (PyCFunction)__pyx_pw_9WaveTools_7dirCheck, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_6dirCheck};
2376 static PyObject *__pyx_pw_9WaveTools_7dirCheck(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2377  PyObject *__pyx_v_v1 = 0;
2378  PyObject *__pyx_v_v2 = 0;
2379  int __pyx_lineno = 0;
2380  const char *__pyx_filename = NULL;
2381  int __pyx_clineno = 0;
2382  PyObject *__pyx_r = 0;
2383  __Pyx_RefNannyDeclarations
2384  __Pyx_RefNannySetupContext("dirCheck (wrapper)", 0);
2385  {
2386  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v1,&__pyx_n_s_v2,0};
2387  PyObject* values[2] = {0,0};
2388  if (unlikely(__pyx_kwds)) {
2389  Py_ssize_t kw_args;
2390  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2391  switch (pos_args) {
2392  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2393  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2394  case 0: break;
2395  default: goto __pyx_L5_argtuple_error;
2396  }
2397  kw_args = PyDict_Size(__pyx_kwds);
2398  switch (pos_args) {
2399  case 0:
2400  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v1)) != 0)) kw_args--;
2401  else goto __pyx_L5_argtuple_error;
2402  case 1:
2403  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v2)) != 0)) kw_args--;
2404  else {
2405  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2406  }
2407  }
2408  if (unlikely(kw_args > 0)) {
2409  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dirCheck") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2410  }
2411  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2412  goto __pyx_L5_argtuple_error;
2413  } else {
2414  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2415  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2416  }
2417  __pyx_v_v1 = values[0];
2418  __pyx_v_v2 = values[1];
2419  }
2420  goto __pyx_L4_argument_unpacking_done;
2421  __pyx_L5_argtuple_error:;
2422  __Pyx_RaiseArgtupleInvalid("dirCheck", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2423  __pyx_L3_error:;
2424  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
2425  __Pyx_RefNannyFinishContext();
2426  return NULL;
2427  __pyx_L4_argument_unpacking_done:;
2428  __pyx_r = __pyx_pf_9WaveTools_6dirCheck(__pyx_self, __pyx_v_v1, __pyx_v_v2);
2429 
2430  /* function exit code */
2431  __Pyx_RefNannyFinishContext();
2432  return __pyx_r;
2433 }
2434 
2435 static PyObject *__pyx_pf_9WaveTools_6dirCheck(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_v1, PyObject *__pyx_v_v2) {
2436  PyObject *__pyx_v_dircheck = NULL;
2437  PyObject *__pyx_r = NULL;
2438  __Pyx_RefNannyDeclarations
2439  PyObject *__pyx_t_1 = NULL;
2440  PyObject *__pyx_t_2 = NULL;
2441  PyObject *__pyx_t_3 = NULL;
2442  PyObject *__pyx_t_4 = NULL;
2443  int __pyx_t_5;
2444  int __pyx_lineno = 0;
2445  const char *__pyx_filename = NULL;
2446  int __pyx_clineno = 0;
2447  __Pyx_RefNannySetupContext("dirCheck", 0);
2448 
2449  /* "WaveTools.pyx":56
2450  * param: v2 : 2nd vector [-] with three components
2451  * """
2452  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2]) # <<<<<<<<<<<<<<
2453  * #print self.dircheck
2454  * if dircheck > 1e-10:
2455  */
2456  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2457  __Pyx_GOTREF(__pyx_t_1);
2458  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2459  __Pyx_GOTREF(__pyx_t_2);
2460  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2461  __Pyx_GOTREF(__pyx_t_3);
2462  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2463  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2464  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_v1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2465  __Pyx_GOTREF(__pyx_t_2);
2466  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_v2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2467  __Pyx_GOTREF(__pyx_t_1);
2468  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2469  __Pyx_GOTREF(__pyx_t_4);
2470  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2471  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2472  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2473  __Pyx_GOTREF(__pyx_t_1);
2474  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2475  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2476  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_v1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2477  __Pyx_GOTREF(__pyx_t_4);
2478  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_v2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2479  __Pyx_GOTREF(__pyx_t_3);
2480  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2481  __Pyx_GOTREF(__pyx_t_2);
2482  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2483  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2484  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2485  __Pyx_GOTREF(__pyx_t_3);
2486  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2487  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2488  __pyx_t_2 = PyNumber_Absolute(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2489  __Pyx_GOTREF(__pyx_t_2);
2490  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2491  __pyx_v_dircheck = __pyx_t_2;
2492  __pyx_t_2 = 0;
2493 
2494  /* "WaveTools.pyx":58
2495  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
2496  * #print self.dircheck
2497  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
2498  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2499  * return sys.exit(1)
2500  */
2501  __pyx_t_2 = PyObject_RichCompare(__pyx_v_dircheck, __pyx_float_1eneg_10, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2502  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2503  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2504  if (__pyx_t_5) {
2505 
2506  /* "WaveTools.pyx":59
2507  * #print self.dircheck
2508  * if dircheck > 1e-10:
2509  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
2510  * return sys.exit(1)
2511  * else:
2512  */
2513  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2514  __Pyx_GOTREF(__pyx_t_2);
2515  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2516  __Pyx_GOTREF(__pyx_t_3);
2517  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2518  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2519  __Pyx_GOTREF(__pyx_t_1);
2520  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2521  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2522  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2523 
2524  /* "WaveTools.pyx":60
2525  * if dircheck > 1e-10:
2526  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2527  * return sys.exit(1) # <<<<<<<<<<<<<<
2528  * else:
2529  * return None
2530  */
2531  __Pyx_XDECREF(__pyx_r);
2532  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2533  __Pyx_GOTREF(__pyx_t_1);
2534  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2535  __Pyx_GOTREF(__pyx_t_3);
2536  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2537  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2538  __Pyx_GOTREF(__pyx_t_1);
2539  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2540  __pyx_r = __pyx_t_1;
2541  __pyx_t_1 = 0;
2542  goto __pyx_L0;
2543 
2544  /* "WaveTools.pyx":58
2545  * dircheck = abs(v1[0]*v2[0]+v1[1]*v2[1]+v1[2]*v2[2])
2546  * #print self.dircheck
2547  * if dircheck > 1e-10: # <<<<<<<<<<<<<<
2548  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
2549  * return sys.exit(1)
2550  */
2551  }
2552 
2553  /* "WaveTools.pyx":62
2554  * return sys.exit(1)
2555  * else:
2556  * return None # <<<<<<<<<<<<<<
2557  * def reduceToIntervals(fi,df):
2558  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2559  */
2560  /*else*/ {
2561  __Pyx_XDECREF(__pyx_r);
2562  __Pyx_INCREF(Py_None);
2563  __pyx_r = Py_None;
2564  goto __pyx_L0;
2565  }
2566 
2567  /* "WaveTools.pyx":51
2568  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
2569  *
2570  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
2571  * """ Checks if to vectors are vertical and returns system exit if not
2572  * param: v1 : 1st vector [-] with three components
2573  */
2574 
2575  /* function exit code */
2576  __pyx_L1_error:;
2577  __Pyx_XDECREF(__pyx_t_1);
2578  __Pyx_XDECREF(__pyx_t_2);
2579  __Pyx_XDECREF(__pyx_t_3);
2580  __Pyx_XDECREF(__pyx_t_4);
2581  __Pyx_AddTraceback("WaveTools.dirCheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
2582  __pyx_r = NULL;
2583  __pyx_L0:;
2584  __Pyx_XDECREF(__pyx_v_dircheck);
2585  __Pyx_XGIVEREF(__pyx_r);
2586  __Pyx_RefNannyFinishContext();
2587  return __pyx_r;
2588 }
2589 
2590 /* "WaveTools.pyx":63
2591  * else:
2592  * return None
2593  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
2594  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2595  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
2596  */
2597 
2598 /* Python wrapper */
2599 static PyObject *__pyx_pw_9WaveTools_9reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2600 static char __pyx_doc_9WaveTools_8reduceToIntervals[] = "reduceToIntervals(fi, df)\n Prepares the x- axis array of size N for numerical integration along he x- axis. \n If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array \n [a1, 0.5(a1+a2), 0.5(a2+a3),...0.5(a_N-1+a_N), a_N]. Input array must have constant step\n param: fi : x- array [-]\n param: df : dx constant step of array [-]\n ";
2601 static PyMethodDef __pyx_mdef_9WaveTools_9reduceToIntervals = {"reduceToIntervals", (PyCFunction)__pyx_pw_9WaveTools_9reduceToIntervals, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_8reduceToIntervals};
2602 static PyObject *__pyx_pw_9WaveTools_9reduceToIntervals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2603  PyObject *__pyx_v_fi = 0;
2604  PyObject *__pyx_v_df = 0;
2605  int __pyx_lineno = 0;
2606  const char *__pyx_filename = NULL;
2607  int __pyx_clineno = 0;
2608  PyObject *__pyx_r = 0;
2609  __Pyx_RefNannyDeclarations
2610  __Pyx_RefNannySetupContext("reduceToIntervals (wrapper)", 0);
2611  {
2612  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_fi,&__pyx_n_s_df,0};
2613  PyObject* values[2] = {0,0};
2614  if (unlikely(__pyx_kwds)) {
2615  Py_ssize_t kw_args;
2616  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2617  switch (pos_args) {
2618  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2619  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2620  case 0: break;
2621  default: goto __pyx_L5_argtuple_error;
2622  }
2623  kw_args = PyDict_Size(__pyx_kwds);
2624  switch (pos_args) {
2625  case 0:
2626  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
2627  else goto __pyx_L5_argtuple_error;
2628  case 1:
2629  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_df)) != 0)) kw_args--;
2630  else {
2631  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2632  }
2633  }
2634  if (unlikely(kw_args > 0)) {
2635  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reduceToIntervals") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2636  }
2637  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2638  goto __pyx_L5_argtuple_error;
2639  } else {
2640  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2641  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2642  }
2643  __pyx_v_fi = values[0];
2644  __pyx_v_df = values[1];
2645  }
2646  goto __pyx_L4_argument_unpacking_done;
2647  __pyx_L5_argtuple_error:;
2648  __Pyx_RaiseArgtupleInvalid("reduceToIntervals", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2649  __pyx_L3_error:;
2650  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
2651  __Pyx_RefNannyFinishContext();
2652  return NULL;
2653  __pyx_L4_argument_unpacking_done:;
2654  __pyx_r = __pyx_pf_9WaveTools_8reduceToIntervals(__pyx_self, __pyx_v_fi, __pyx_v_df);
2655 
2656  /* function exit code */
2657  __Pyx_RefNannyFinishContext();
2658  return __pyx_r;
2659 }
2660 
2661 static PyObject *__pyx_pf_9WaveTools_8reduceToIntervals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_fi, PyObject *__pyx_v_df) {
2662  PyObject *__pyx_v_fim_tmp = NULL;
2663  PyObject *__pyx_r = NULL;
2664  __Pyx_RefNannyDeclarations
2665  PyObject *__pyx_t_1 = NULL;
2666  PyObject *__pyx_t_2 = NULL;
2667  PyObject *__pyx_t_3 = NULL;
2668  PyObject *__pyx_t_4 = NULL;
2669  PyObject *__pyx_t_5 = NULL;
2670  PyObject *__pyx_t_6 = NULL;
2671  int __pyx_lineno = 0;
2672  const char *__pyx_filename = NULL;
2673  int __pyx_clineno = 0;
2674  __Pyx_RefNannySetupContext("reduceToIntervals", 0);
2675 
2676  /* "WaveTools.pyx":70
2677  * param: df : dx constant step of array [-]
2678  * """
2679  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
2680  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2681  * def returnRectangles(a,x):
2682  */
2683  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 1, 0, NULL, NULL, &__pyx_slice__4, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2684  __Pyx_GOTREF(__pyx_t_2);
2685  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, -1L, NULL, NULL, &__pyx_slice__5, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2686  __Pyx_GOTREF(__pyx_t_3);
2687  __pyx_t_4 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2688  __Pyx_GOTREF(__pyx_t_4);
2689  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2690  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2691  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2692  __Pyx_GOTREF(__pyx_t_3);
2693  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2694  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_tolist); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2695  __Pyx_GOTREF(__pyx_t_4);
2696  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2697  __pyx_t_3 = NULL;
2698  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_4))) {
2699  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
2700  if (likely(__pyx_t_3)) {
2701  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
2702  __Pyx_INCREF(__pyx_t_3);
2703  __Pyx_INCREF(function);
2704  __Pyx_DECREF_SET(__pyx_t_4, function);
2705  }
2706  }
2707  if (__pyx_t_3) {
2708  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2709  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2710  } else {
2711  __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2712  }
2713  __Pyx_GOTREF(__pyx_t_1);
2714  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2715  __pyx_v_fim_tmp = __pyx_t_1;
2716  __pyx_t_1 = 0;
2717 
2718  /* "WaveTools.pyx":71
2719  * """
2720  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2721  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df]) # <<<<<<<<<<<<<<
2722  * def returnRectangles(a,x):
2723  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2724  */
2725  __Pyx_XDECREF(__pyx_r);
2726  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2727  __Pyx_GOTREF(__pyx_t_4);
2728  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2729  __Pyx_GOTREF(__pyx_t_3);
2730  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2731  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fim_tmp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2732  __Pyx_GOTREF(__pyx_t_4);
2733  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2734  __Pyx_GOTREF(__pyx_t_2);
2735  __pyx_t_5 = PyNumber_Subtract(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2736  __Pyx_GOTREF(__pyx_t_5);
2737  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2738  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2739  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2740  __Pyx_GOTREF(__pyx_t_2);
2741  __Pyx_GIVEREF(__pyx_t_5);
2742  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
2743  __pyx_t_5 = 0;
2744  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_v_fim_tmp); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2745  __Pyx_GOTREF(__pyx_t_5);
2746  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2747  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_fim_tmp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
2748  __Pyx_GOTREF(__pyx_t_2);
2749  __pyx_t_4 = PyNumber_Multiply(__pyx_float_0_5, __pyx_v_df); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2750  __Pyx_GOTREF(__pyx_t_4);
2751  __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2752  __Pyx_GOTREF(__pyx_t_6);
2753  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2754  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2755  __pyx_t_4 = PyList_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2756  __Pyx_GOTREF(__pyx_t_4);
2757  __Pyx_GIVEREF(__pyx_t_6);
2758  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_t_6);
2759  __pyx_t_6 = 0;
2760  __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2761  __Pyx_GOTREF(__pyx_t_6);
2762  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2763  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2764  __pyx_t_4 = NULL;
2765  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
2766  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
2767  if (likely(__pyx_t_4)) {
2768  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
2769  __Pyx_INCREF(__pyx_t_4);
2770  __Pyx_INCREF(function);
2771  __Pyx_DECREF_SET(__pyx_t_3, function);
2772  }
2773  }
2774  if (!__pyx_t_4) {
2775  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2776  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
2777  __Pyx_GOTREF(__pyx_t_1);
2778  } else {
2779  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2780  __Pyx_GOTREF(__pyx_t_5);
2781  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
2782  __Pyx_GIVEREF(__pyx_t_6);
2783  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_6);
2784  __pyx_t_6 = 0;
2785  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2786  __Pyx_GOTREF(__pyx_t_1);
2787  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
2788  }
2789  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2790  __pyx_r = __pyx_t_1;
2791  __pyx_t_1 = 0;
2792  goto __pyx_L0;
2793 
2794  /* "WaveTools.pyx":63
2795  * else:
2796  * return None
2797  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
2798  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
2799  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
2800  */
2801 
2802  /* function exit code */
2803  __pyx_L1_error:;
2804  __Pyx_XDECREF(__pyx_t_1);
2805  __Pyx_XDECREF(__pyx_t_2);
2806  __Pyx_XDECREF(__pyx_t_3);
2807  __Pyx_XDECREF(__pyx_t_4);
2808  __Pyx_XDECREF(__pyx_t_5);
2809  __Pyx_XDECREF(__pyx_t_6);
2810  __Pyx_AddTraceback("WaveTools.reduceToIntervals", __pyx_clineno, __pyx_lineno, __pyx_filename);
2811  __pyx_r = NULL;
2812  __pyx_L0:;
2813  __Pyx_XDECREF(__pyx_v_fim_tmp);
2814  __Pyx_XGIVEREF(__pyx_r);
2815  __Pyx_RefNannyFinishContext();
2816  return __pyx_r;
2817 }
2818 
2819 /* "WaveTools.pyx":72
2820  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2821  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2822  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
2823  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2824  * param: a : y(x) function [-]
2825  */
2826 
2827 /* Python wrapper */
2828 static PyObject *__pyx_pw_9WaveTools_11returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2829 static char __pyx_doc_9WaveTools_10returnRectangles[] = "returnRectangles(a, x)\n Returns \\delta y of y(x) using the rectangle method (\\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n) \n param: a : y(x) function [-]\n param: x : x- coordinate [-]\n ";
2830 static PyMethodDef __pyx_mdef_9WaveTools_11returnRectangles = {"returnRectangles", (PyCFunction)__pyx_pw_9WaveTools_11returnRectangles, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10returnRectangles};
2831 static PyObject *__pyx_pw_9WaveTools_11returnRectangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2832  PyObject *__pyx_v_a = 0;
2833  PyObject *__pyx_v_x = 0;
2834  int __pyx_lineno = 0;
2835  const char *__pyx_filename = NULL;
2836  int __pyx_clineno = 0;
2837  PyObject *__pyx_r = 0;
2838  __Pyx_RefNannyDeclarations
2839  __Pyx_RefNannySetupContext("returnRectangles (wrapper)", 0);
2840  {
2841  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,0};
2842  PyObject* values[2] = {0,0};
2843  if (unlikely(__pyx_kwds)) {
2844  Py_ssize_t kw_args;
2845  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2846  switch (pos_args) {
2847  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2848  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2849  case 0: break;
2850  default: goto __pyx_L5_argtuple_error;
2851  }
2852  kw_args = PyDict_Size(__pyx_kwds);
2853  switch (pos_args) {
2854  case 0:
2855  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
2856  else goto __pyx_L5_argtuple_error;
2857  case 1:
2858  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
2859  else {
2860  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2861  }
2862  }
2863  if (unlikely(kw_args > 0)) {
2864  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2865  }
2866  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
2867  goto __pyx_L5_argtuple_error;
2868  } else {
2869  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2870  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2871  }
2872  __pyx_v_a = values[0];
2873  __pyx_v_x = values[1];
2874  }
2875  goto __pyx_L4_argument_unpacking_done;
2876  __pyx_L5_argtuple_error:;
2877  __Pyx_RaiseArgtupleInvalid("returnRectangles", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
2878  __pyx_L3_error:;
2879  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
2880  __Pyx_RefNannyFinishContext();
2881  return NULL;
2882  __pyx_L4_argument_unpacking_done:;
2883  __pyx_r = __pyx_pf_9WaveTools_10returnRectangles(__pyx_self, __pyx_v_a, __pyx_v_x);
2884 
2885  /* function exit code */
2886  __Pyx_RefNannyFinishContext();
2887  return __pyx_r;
2888 }
2889 
2890 static PyObject *__pyx_pf_9WaveTools_10returnRectangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x) {
2891  PyObject *__pyx_r = NULL;
2892  __Pyx_RefNannyDeclarations
2893  PyObject *__pyx_t_1 = NULL;
2894  PyObject *__pyx_t_2 = NULL;
2895  PyObject *__pyx_t_3 = NULL;
2896  PyObject *__pyx_t_4 = NULL;
2897  int __pyx_lineno = 0;
2898  const char *__pyx_filename = NULL;
2899  int __pyx_clineno = 0;
2900  __Pyx_RefNannySetupContext("returnRectangles", 0);
2901 
2902  /* "WaveTools.pyx":77
2903  * param: x : x- coordinate [-]
2904  * """
2905  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1]) # <<<<<<<<<<<<<<
2906  * def returnRectangles3D(a,x,y):
2907  * """ Returns \delta y of y(x,z) using the rectangle method
2908  */
2909  __Pyx_XDECREF(__pyx_r);
2910  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_a, 1, 0, NULL, NULL, &__pyx_slice__6, 1, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2911  __Pyx_GOTREF(__pyx_t_1);
2912  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_a, 0, -1L, NULL, NULL, &__pyx_slice__7, 0, 1, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2913  __Pyx_GOTREF(__pyx_t_2);
2914  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2915  __Pyx_GOTREF(__pyx_t_3);
2916  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2917  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2918  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2919  __Pyx_GOTREF(__pyx_t_2);
2920  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2921  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__8, 1, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2922  __Pyx_GOTREF(__pyx_t_3);
2923  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__9, 0, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2924  __Pyx_GOTREF(__pyx_t_1);
2925  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2926  __Pyx_GOTREF(__pyx_t_4);
2927  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
2928  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
2929  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
2930  __Pyx_GOTREF(__pyx_t_1);
2931  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
2932  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
2933  __pyx_r = __pyx_t_1;
2934  __pyx_t_1 = 0;
2935  goto __pyx_L0;
2936 
2937  /* "WaveTools.pyx":72
2938  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
2939  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
2940  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
2941  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
2942  * param: a : y(x) function [-]
2943  */
2944 
2945  /* function exit code */
2946  __pyx_L1_error:;
2947  __Pyx_XDECREF(__pyx_t_1);
2948  __Pyx_XDECREF(__pyx_t_2);
2949  __Pyx_XDECREF(__pyx_t_3);
2950  __Pyx_XDECREF(__pyx_t_4);
2951  __Pyx_AddTraceback("WaveTools.returnRectangles", __pyx_clineno, __pyx_lineno, __pyx_filename);
2952  __pyx_r = NULL;
2953  __pyx_L0:;
2954  __Pyx_XGIVEREF(__pyx_r);
2955  __Pyx_RefNannyFinishContext();
2956  return __pyx_r;
2957 }
2958 
2959 /* "WaveTools.pyx":78
2960  * """
2961  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
2962  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
2963  * """ Returns \delta y of y(x,z) using the rectangle method
2964  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
2965  */
2966 
2967 /* Python wrapper */
2968 static PyObject *__pyx_pw_9WaveTools_13returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
2969 static char __pyx_doc_9WaveTools_12returnRectangles3D[] = "returnRectangles3D(a, x, y)\n Returns \\delta y of y(x,z) using the rectangle method \n \\delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)\n param: a : a(x,y) function [-]\n param: x : x- coordinate [-]\n param: y : y- coordinate [-]\n ";
2970 static PyMethodDef __pyx_mdef_9WaveTools_13returnRectangles3D = {"returnRectangles3D", (PyCFunction)__pyx_pw_9WaveTools_13returnRectangles3D, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_12returnRectangles3D};
2971 static PyObject *__pyx_pw_9WaveTools_13returnRectangles3D(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
2972  PyObject *__pyx_v_a = 0;
2973  PyObject *__pyx_v_x = 0;
2974  PyObject *__pyx_v_y = 0;
2975  int __pyx_lineno = 0;
2976  const char *__pyx_filename = NULL;
2977  int __pyx_clineno = 0;
2978  PyObject *__pyx_r = 0;
2979  __Pyx_RefNannyDeclarations
2980  __Pyx_RefNannySetupContext("returnRectangles3D (wrapper)", 0);
2981  {
2982  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_a,&__pyx_n_s_x,&__pyx_n_s_y,0};
2983  PyObject* values[3] = {0,0,0};
2984  if (unlikely(__pyx_kwds)) {
2985  Py_ssize_t kw_args;
2986  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
2987  switch (pos_args) {
2988  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
2989  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
2990  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
2991  case 0: break;
2992  default: goto __pyx_L5_argtuple_error;
2993  }
2994  kw_args = PyDict_Size(__pyx_kwds);
2995  switch (pos_args) {
2996  case 0:
2997  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a)) != 0)) kw_args--;
2998  else goto __pyx_L5_argtuple_error;
2999  case 1:
3000  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3001  else {
3002  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3003  }
3004  case 2:
3005  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
3006  else {
3007  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3008  }
3009  }
3010  if (unlikely(kw_args > 0)) {
3011  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "returnRectangles3D") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3012  }
3013  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
3014  goto __pyx_L5_argtuple_error;
3015  } else {
3016  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3017  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3018  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3019  }
3020  __pyx_v_a = values[0];
3021  __pyx_v_x = values[1];
3022  __pyx_v_y = values[2];
3023  }
3024  goto __pyx_L4_argument_unpacking_done;
3025  __pyx_L5_argtuple_error:;
3026  __Pyx_RaiseArgtupleInvalid("returnRectangles3D", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3027  __pyx_L3_error:;
3028  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
3029  __Pyx_RefNannyFinishContext();
3030  return NULL;
3031  __pyx_L4_argument_unpacking_done:;
3032  __pyx_r = __pyx_pf_9WaveTools_12returnRectangles3D(__pyx_self, __pyx_v_a, __pyx_v_x, __pyx_v_y);
3033 
3034  /* function exit code */
3035  __Pyx_RefNannyFinishContext();
3036  return __pyx_r;
3037 }
3038 
3039 static PyObject *__pyx_pf_9WaveTools_12returnRectangles3D(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_a, PyObject *__pyx_v_x, PyObject *__pyx_v_y) {
3040  PyObject *__pyx_v_ai = NULL;
3041  Py_ssize_t __pyx_v_ii;
3042  Py_ssize_t __pyx_v_jj;
3043  PyObject *__pyx_r = NULL;
3044  __Pyx_RefNannyDeclarations
3045  PyObject *__pyx_t_1 = NULL;
3046  PyObject *__pyx_t_2 = NULL;
3047  PyObject *__pyx_t_3 = NULL;
3048  Py_ssize_t __pyx_t_4;
3049  Py_ssize_t __pyx_t_5;
3050  PyObject *__pyx_t_6 = NULL;
3051  PyObject *__pyx_t_7 = NULL;
3052  int __pyx_lineno = 0;
3053  const char *__pyx_filename = NULL;
3054  int __pyx_clineno = 0;
3055  __Pyx_RefNannySetupContext("returnRectangles3D", 0);
3056 
3057  /* "WaveTools.pyx":85
3058  * param: y : y- coordinate [-]
3059  * """
3060  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
3061  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3062  * for ii in range(len(x)-1):
3063  */
3064  __pyx_t_1 = PyObject_GetItem(__pyx_v_a, __pyx_tuple__12); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3065  __Pyx_GOTREF(__pyx_t_1);
3066  __pyx_t_2 = PyObject_GetItem(__pyx_v_a, __pyx_tuple__15); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3067  __Pyx_GOTREF(__pyx_t_2);
3068  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3069  __Pyx_GOTREF(__pyx_t_3);
3070  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3071  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3072  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3073  __Pyx_GOTREF(__pyx_t_2);
3074  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3075  __pyx_v_ai = __pyx_t_2;
3076  __pyx_t_2 = 0;
3077 
3078  /* "WaveTools.pyx":86
3079  * """
3080  * ai = 0.5*(a[1:,:]+a[:-1,:])
3081  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
3082  * for ii in range(len(x)-1):
3083  * ai[ii,:] *= (y[1:]-y[:-1])
3084  */
3085  __pyx_t_2 = PyObject_GetItem(__pyx_v_ai, __pyx_tuple__18); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3086  __Pyx_GOTREF(__pyx_t_2);
3087  __pyx_t_3 = PyObject_GetItem(__pyx_v_ai, __pyx_tuple__21); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3088  __Pyx_GOTREF(__pyx_t_3);
3089  __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3090  __Pyx_GOTREF(__pyx_t_1);
3091  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3092  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3093  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3094  __Pyx_GOTREF(__pyx_t_3);
3095  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3096  __Pyx_DECREF_SET(__pyx_v_ai, __pyx_t_3);
3097  __pyx_t_3 = 0;
3098 
3099  /* "WaveTools.pyx":87
3100  * ai = 0.5*(a[1:,:]+a[:-1,:])
3101  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3102  * for ii in range(len(x)-1): # <<<<<<<<<<<<<<
3103  * ai[ii,:] *= (y[1:]-y[:-1])
3104  * for jj in range(len(y) - 1):
3105  */
3106  __pyx_t_4 = PyObject_Length(__pyx_v_x); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3107  __pyx_t_5 = (__pyx_t_4 - 1);
3108  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_5; __pyx_t_4+=1) {
3109  __pyx_v_ii = __pyx_t_4;
3110 
3111  /* "WaveTools.pyx":88
3112  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
3113  * for ii in range(len(x)-1):
3114  * ai[ii,:] *= (y[1:]-y[:-1]) # <<<<<<<<<<<<<<
3115  * for jj in range(len(y) - 1):
3116  * ai[:,jj] *= (x[1:]-x[:-1])
3117  */
3118  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3119  __Pyx_GOTREF(__pyx_t_3);
3120  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3121  __Pyx_GOTREF(__pyx_t_1);
3122  __Pyx_GIVEREF(__pyx_t_3);
3123  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
3124  __Pyx_INCREF(__pyx_slice__22);
3125  __Pyx_GIVEREF(__pyx_slice__22);
3126  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__22);
3127  __pyx_t_3 = 0;
3128  __pyx_t_3 = PyObject_GetItem(__pyx_v_ai, __pyx_t_1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3129  __Pyx_GOTREF(__pyx_t_3);
3130  __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_y, 1, 0, NULL, NULL, &__pyx_slice__23, 1, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3131  __Pyx_GOTREF(__pyx_t_2);
3132  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_y, 0, -1L, NULL, NULL, &__pyx_slice__24, 0, 1, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3133  __Pyx_GOTREF(__pyx_t_6);
3134  __pyx_t_7 = PyNumber_Subtract(__pyx_t_2, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3135  __Pyx_GOTREF(__pyx_t_7);
3136  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3137  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3138  __pyx_t_6 = PyNumber_InPlaceMultiply(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3139  __Pyx_GOTREF(__pyx_t_6);
3140  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3141  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
3142  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_1, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3143  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3144  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3145  }
3146 
3147  /* "WaveTools.pyx":89
3148  * for ii in range(len(x)-1):
3149  * ai[ii,:] *= (y[1:]-y[:-1])
3150  * for jj in range(len(y) - 1): # <<<<<<<<<<<<<<
3151  * ai[:,jj] *= (x[1:]-x[:-1])
3152  * return ai
3153  */
3154  __pyx_t_5 = PyObject_Length(__pyx_v_y); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 89; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3155  __pyx_t_4 = (__pyx_t_5 - 1);
3156  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
3157  __pyx_v_jj = __pyx_t_5;
3158 
3159  /* "WaveTools.pyx":90
3160  * ai[ii,:] *= (y[1:]-y[:-1])
3161  * for jj in range(len(y) - 1):
3162  * ai[:,jj] *= (x[1:]-x[:-1]) # <<<<<<<<<<<<<<
3163  * return ai
3164  * def normIntegral(Sint,th):
3165  */
3166  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_jj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3167  __Pyx_GOTREF(__pyx_t_1);
3168  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3169  __Pyx_GOTREF(__pyx_t_6);
3170  __Pyx_INCREF(__pyx_slice__25);
3171  __Pyx_GIVEREF(__pyx_slice__25);
3172  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__25);
3173  __Pyx_GIVEREF(__pyx_t_1);
3174  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
3175  __pyx_t_1 = 0;
3176  __pyx_t_1 = PyObject_GetItem(__pyx_v_ai, __pyx_t_6); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3177  __Pyx_GOTREF(__pyx_t_1);
3178  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_v_x, 1, 0, NULL, NULL, &__pyx_slice__26, 1, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3179  __Pyx_GOTREF(__pyx_t_7);
3180  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_v_x, 0, -1L, NULL, NULL, &__pyx_slice__27, 0, 1, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3181  __Pyx_GOTREF(__pyx_t_3);
3182  __pyx_t_2 = PyNumber_Subtract(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3183  __Pyx_GOTREF(__pyx_t_2);
3184  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
3185  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3186  __pyx_t_3 = PyNumber_InPlaceMultiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3187  __Pyx_GOTREF(__pyx_t_3);
3188  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3189  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3190  if (unlikely(PyObject_SetItem(__pyx_v_ai, __pyx_t_6, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3191  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3192  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3193  }
3194 
3195  /* "WaveTools.pyx":91
3196  * for jj in range(len(y) - 1):
3197  * ai[:,jj] *= (x[1:]-x[:-1])
3198  * return ai # <<<<<<<<<<<<<<
3199  * def normIntegral(Sint,th):
3200  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3201  */
3202  __Pyx_XDECREF(__pyx_r);
3203  __Pyx_INCREF(__pyx_v_ai);
3204  __pyx_r = __pyx_v_ai;
3205  goto __pyx_L0;
3206 
3207  /* "WaveTools.pyx":78
3208  * """
3209  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
3210  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
3211  * """ Returns \delta y of y(x,z) using the rectangle method
3212  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
3213  */
3214 
3215  /* function exit code */
3216  __pyx_L1_error:;
3217  __Pyx_XDECREF(__pyx_t_1);
3218  __Pyx_XDECREF(__pyx_t_2);
3219  __Pyx_XDECREF(__pyx_t_3);
3220  __Pyx_XDECREF(__pyx_t_6);
3221  __Pyx_XDECREF(__pyx_t_7);
3222  __Pyx_AddTraceback("WaveTools.returnRectangles3D", __pyx_clineno, __pyx_lineno, __pyx_filename);
3223  __pyx_r = NULL;
3224  __pyx_L0:;
3225  __Pyx_XDECREF(__pyx_v_ai);
3226  __Pyx_XGIVEREF(__pyx_r);
3227  __Pyx_RefNannyFinishContext();
3228  return __pyx_r;
3229 }
3230 
3231 /* "WaveTools.pyx":92
3232  * ai[:,jj] *= (x[1:]-x[:-1])
3233  * return ai
3234  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
3235  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3236  * param: Sint : Sint(th) function [-]
3237  */
3238 
3239 /* Python wrapper */
3240 static PyObject *__pyx_pw_9WaveTools_15normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3241 static char __pyx_doc_9WaveTools_14normIntegral[] = "normIntegral(Sint, th)\nGiven an Sint(th) function, it returns Sint_n, such as \\int (Sint_n dth = 1)\n param: Sint : Sint(th) function [-]\n param: th : th- coordinate [-]\n ";
3242 static PyMethodDef __pyx_mdef_9WaveTools_15normIntegral = {"normIntegral", (PyCFunction)__pyx_pw_9WaveTools_15normIntegral, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_14normIntegral};
3243 static PyObject *__pyx_pw_9WaveTools_15normIntegral(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3244  PyObject *__pyx_v_Sint = 0;
3245  PyObject *__pyx_v_th = 0;
3246  int __pyx_lineno = 0;
3247  const char *__pyx_filename = NULL;
3248  int __pyx_clineno = 0;
3249  PyObject *__pyx_r = 0;
3250  __Pyx_RefNannyDeclarations
3251  __Pyx_RefNannySetupContext("normIntegral (wrapper)", 0);
3252  {
3253  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_Sint,&__pyx_n_s_th,0};
3254  PyObject* values[2] = {0,0};
3255  if (unlikely(__pyx_kwds)) {
3256  Py_ssize_t kw_args;
3257  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3258  switch (pos_args) {
3259  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3260  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3261  case 0: break;
3262  default: goto __pyx_L5_argtuple_error;
3263  }
3264  kw_args = PyDict_Size(__pyx_kwds);
3265  switch (pos_args) {
3266  case 0:
3267  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Sint)) != 0)) kw_args--;
3268  else goto __pyx_L5_argtuple_error;
3269  case 1:
3270  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_th)) != 0)) kw_args--;
3271  else {
3272  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3273  }
3274  }
3275  if (unlikely(kw_args > 0)) {
3276  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "normIntegral") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3277  }
3278  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
3279  goto __pyx_L5_argtuple_error;
3280  } else {
3281  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3282  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3283  }
3284  __pyx_v_Sint = values[0];
3285  __pyx_v_th = values[1];
3286  }
3287  goto __pyx_L4_argument_unpacking_done;
3288  __pyx_L5_argtuple_error:;
3289  __Pyx_RaiseArgtupleInvalid("normIntegral", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3290  __pyx_L3_error:;
3291  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
3292  __Pyx_RefNannyFinishContext();
3293  return NULL;
3294  __pyx_L4_argument_unpacking_done:;
3295  __pyx_r = __pyx_pf_9WaveTools_14normIntegral(__pyx_self, __pyx_v_Sint, __pyx_v_th);
3296 
3297  /* function exit code */
3298  __Pyx_RefNannyFinishContext();
3299  return __pyx_r;
3300 }
3301 
3302 static PyObject *__pyx_pf_9WaveTools_14normIntegral(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_Sint, PyObject *__pyx_v_th) {
3303  PyObject *__pyx_v_G0 = NULL;
3304  PyObject *__pyx_r = NULL;
3305  __Pyx_RefNannyDeclarations
3306  PyObject *__pyx_t_1 = NULL;
3307  PyObject *__pyx_t_2 = NULL;
3308  PyObject *__pyx_t_3 = NULL;
3309  Py_ssize_t __pyx_t_4;
3310  PyObject *__pyx_t_5 = NULL;
3311  int __pyx_lineno = 0;
3312  const char *__pyx_filename = NULL;
3313  int __pyx_clineno = 0;
3314  __Pyx_RefNannySetupContext("normIntegral", 0);
3315 
3316  /* "WaveTools.pyx":97
3317  * param: th : th- coordinate [-]
3318  * """
3319  * G0 = 1./sum(returnRectangles(Sint,th)) # <<<<<<<<<<<<<<
3320  * return G0*Sint
3321  *
3322  */
3323  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3324  __Pyx_GOTREF(__pyx_t_2);
3325  __pyx_t_3 = NULL;
3326  __pyx_t_4 = 0;
3327  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
3328  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
3329  if (likely(__pyx_t_3)) {
3330  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
3331  __Pyx_INCREF(__pyx_t_3);
3332  __Pyx_INCREF(function);
3333  __Pyx_DECREF_SET(__pyx_t_2, function);
3334  __pyx_t_4 = 1;
3335  }
3336  }
3337  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3338  __Pyx_GOTREF(__pyx_t_5);
3339  if (__pyx_t_3) {
3340  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
3341  }
3342  __Pyx_INCREF(__pyx_v_Sint);
3343  __Pyx_GIVEREF(__pyx_v_Sint);
3344  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_Sint);
3345  __Pyx_INCREF(__pyx_v_th);
3346  __Pyx_GIVEREF(__pyx_v_th);
3347  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_th);
3348  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3349  __Pyx_GOTREF(__pyx_t_1);
3350  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3351  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3352  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3353  __Pyx_GOTREF(__pyx_t_2);
3354  __Pyx_GIVEREF(__pyx_t_1);
3355  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
3356  __pyx_t_1 = 0;
3357  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3358  __Pyx_GOTREF(__pyx_t_1);
3359  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3360  __pyx_t_2 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_1, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3361  __Pyx_GOTREF(__pyx_t_2);
3362  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3363  __pyx_v_G0 = __pyx_t_2;
3364  __pyx_t_2 = 0;
3365 
3366  /* "WaveTools.pyx":98
3367  * """
3368  * G0 = 1./sum(returnRectangles(Sint,th))
3369  * return G0*Sint # <<<<<<<<<<<<<<
3370  *
3371  *
3372  */
3373  __Pyx_XDECREF(__pyx_r);
3374  __pyx_t_2 = PyNumber_Multiply(__pyx_v_G0, __pyx_v_Sint); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3375  __Pyx_GOTREF(__pyx_t_2);
3376  __pyx_r = __pyx_t_2;
3377  __pyx_t_2 = 0;
3378  goto __pyx_L0;
3379 
3380  /* "WaveTools.pyx":92
3381  * ai[:,jj] *= (x[1:]-x[:-1])
3382  * return ai
3383  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
3384  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
3385  * param: Sint : Sint(th) function [-]
3386  */
3387 
3388  /* function exit code */
3389  __pyx_L1_error:;
3390  __Pyx_XDECREF(__pyx_t_1);
3391  __Pyx_XDECREF(__pyx_t_2);
3392  __Pyx_XDECREF(__pyx_t_3);
3393  __Pyx_XDECREF(__pyx_t_5);
3394  __Pyx_AddTraceback("WaveTools.normIntegral", __pyx_clineno, __pyx_lineno, __pyx_filename);
3395  __pyx_r = NULL;
3396  __pyx_L0:;
3397  __Pyx_XDECREF(__pyx_v_G0);
3398  __Pyx_XGIVEREF(__pyx_r);
3399  __Pyx_RefNannyFinishContext();
3400  return __pyx_r;
3401 }
3402 
3403 /* "WaveTools.pyx":102
3404  *
3405  *
3406  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
3407  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
3408  * :param kDir: wave number vector [1/L] with three components
3409  */
3410 
3411 /* Python wrapper */
3412 static PyObject *__pyx_pw_9WaveTools_17eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3413 static char __pyx_doc_9WaveTools_16eta_mode[] = "eta_mode(x, t, kDir, omega, phi, amplitude)\nReturns a single frequency mode for free-surface elevation at point x,y,z,t\n :param kDir: wave number vector [1/L] with three components\n :param omega: angular frequency [1/T]\n :param phi: phase [0,2*pi]\n :param amplitude: wave amplitude [L/T^2]\n ";
3414 static PyMethodDef __pyx_mdef_9WaveTools_17eta_mode = {"eta_mode", (PyCFunction)__pyx_pw_9WaveTools_17eta_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16eta_mode};
3415 static PyObject *__pyx_pw_9WaveTools_17eta_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3416  PyObject *__pyx_v_x = 0;
3417  PyObject *__pyx_v_t = 0;
3418  PyObject *__pyx_v_kDir = 0;
3419  PyObject *__pyx_v_omega = 0;
3420  PyObject *__pyx_v_phi = 0;
3421  PyObject *__pyx_v_amplitude = 0;
3422  int __pyx_lineno = 0;
3423  const char *__pyx_filename = NULL;
3424  int __pyx_clineno = 0;
3425  PyObject *__pyx_r = 0;
3426  __Pyx_RefNannyDeclarations
3427  __Pyx_RefNannySetupContext("eta_mode (wrapper)", 0);
3428  {
3429  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,0};
3430  PyObject* values[6] = {0,0,0,0,0,0};
3431  if (unlikely(__pyx_kwds)) {
3432  Py_ssize_t kw_args;
3433  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3434  switch (pos_args) {
3435  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3436  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3437  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3438  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3439  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3440  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3441  case 0: break;
3442  default: goto __pyx_L5_argtuple_error;
3443  }
3444  kw_args = PyDict_Size(__pyx_kwds);
3445  switch (pos_args) {
3446  case 0:
3447  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3448  else goto __pyx_L5_argtuple_error;
3449  case 1:
3450  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3451  else {
3452  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3453  }
3454  case 2:
3455  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
3456  else {
3457  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3458  }
3459  case 3:
3460  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
3461  else {
3462  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3463  }
3464  case 4:
3465  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
3466  else {
3467  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3468  }
3469  case 5:
3470  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
3471  else {
3472  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3473  }
3474  }
3475  if (unlikely(kw_args > 0)) {
3476  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta_mode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3477  }
3478  } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
3479  goto __pyx_L5_argtuple_error;
3480  } else {
3481  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3482  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3483  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3484  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3485  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3486  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3487  }
3488  __pyx_v_x = values[0];
3489  __pyx_v_t = values[1];
3490  __pyx_v_kDir = values[2];
3491  __pyx_v_omega = values[3];
3492  __pyx_v_phi = values[4];
3493  __pyx_v_amplitude = values[5];
3494  }
3495  goto __pyx_L4_argument_unpacking_done;
3496  __pyx_L5_argtuple_error:;
3497  __Pyx_RaiseArgtupleInvalid("eta_mode", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3498  __pyx_L3_error:;
3499  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3500  __Pyx_RefNannyFinishContext();
3501  return NULL;
3502  __pyx_L4_argument_unpacking_done:;
3503  __pyx_r = __pyx_pf_9WaveTools_16eta_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude);
3504 
3505  /* function exit code */
3506  __Pyx_RefNannyFinishContext();
3507  return __pyx_r;
3508 }
3509 
3510 static PyObject *__pyx_pf_9WaveTools_16eta_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude) {
3511  PyObject *__pyx_v_phase = NULL;
3512  PyObject *__pyx_r = NULL;
3513  __Pyx_RefNannyDeclarations
3514  PyObject *__pyx_t_1 = NULL;
3515  PyObject *__pyx_t_2 = NULL;
3516  PyObject *__pyx_t_3 = NULL;
3517  PyObject *__pyx_t_4 = NULL;
3518  int __pyx_lineno = 0;
3519  const char *__pyx_filename = NULL;
3520  int __pyx_clineno = 0;
3521  __Pyx_RefNannySetupContext("eta_mode", 0);
3522 
3523  /* "WaveTools.pyx":109
3524  * :param amplitude: wave amplitude [L/T^2]
3525  * """
3526  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
3527  * return amplitude*cos(phase)
3528  *
3529  */
3530  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3531  __Pyx_GOTREF(__pyx_t_1);
3532  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3533  __Pyx_GOTREF(__pyx_t_2);
3534  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3535  __Pyx_GOTREF(__pyx_t_3);
3536  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3537  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3538  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3539  __Pyx_GOTREF(__pyx_t_2);
3540  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3541  __Pyx_GOTREF(__pyx_t_1);
3542  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3543  __Pyx_GOTREF(__pyx_t_4);
3544  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3545  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3546  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3547  __Pyx_GOTREF(__pyx_t_1);
3548  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3549  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3550  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3551  __Pyx_GOTREF(__pyx_t_4);
3552  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3553  __Pyx_GOTREF(__pyx_t_3);
3554  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3555  __Pyx_GOTREF(__pyx_t_2);
3556  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3557  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3558  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3559  __Pyx_GOTREF(__pyx_t_3);
3560  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3561  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3562  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3563  __Pyx_GOTREF(__pyx_t_2);
3564  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3565  __Pyx_GOTREF(__pyx_t_1);
3566  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3567  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3568  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3569  __Pyx_GOTREF(__pyx_t_2);
3570  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3571  __pyx_v_phase = __pyx_t_2;
3572  __pyx_t_2 = 0;
3573 
3574  /* "WaveTools.pyx":110
3575  * """
3576  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3577  * return amplitude*cos(phase) # <<<<<<<<<<<<<<
3578  *
3579  *
3580  */
3581  __Pyx_XDECREF(__pyx_r);
3582  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3583  __Pyx_GOTREF(__pyx_t_1);
3584  __pyx_t_3 = NULL;
3585  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
3586  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
3587  if (likely(__pyx_t_3)) {
3588  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
3589  __Pyx_INCREF(__pyx_t_3);
3590  __Pyx_INCREF(function);
3591  __Pyx_DECREF_SET(__pyx_t_1, function);
3592  }
3593  }
3594  if (!__pyx_t_3) {
3595  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3596  __Pyx_GOTREF(__pyx_t_2);
3597  } else {
3598  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3599  __Pyx_GOTREF(__pyx_t_4);
3600  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
3601  __Pyx_INCREF(__pyx_v_phase);
3602  __Pyx_GIVEREF(__pyx_v_phase);
3603  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_phase);
3604  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3605  __Pyx_GOTREF(__pyx_t_2);
3606  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3607  }
3608  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3609  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3610  __Pyx_GOTREF(__pyx_t_1);
3611  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3612  __pyx_r = __pyx_t_1;
3613  __pyx_t_1 = 0;
3614  goto __pyx_L0;
3615 
3616  /* "WaveTools.pyx":102
3617  *
3618  *
3619  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
3620  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
3621  * :param kDir: wave number vector [1/L] with three components
3622  */
3623 
3624  /* function exit code */
3625  __pyx_L1_error:;
3626  __Pyx_XDECREF(__pyx_t_1);
3627  __Pyx_XDECREF(__pyx_t_2);
3628  __Pyx_XDECREF(__pyx_t_3);
3629  __Pyx_XDECREF(__pyx_t_4);
3630  __Pyx_AddTraceback("WaveTools.eta_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3631  __pyx_r = NULL;
3632  __pyx_L0:;
3633  __Pyx_XDECREF(__pyx_v_phase);
3634  __Pyx_XGIVEREF(__pyx_r);
3635  __Pyx_RefNannyFinishContext();
3636  return __pyx_r;
3637 }
3638 
3639 /* "WaveTools.pyx":113
3640  *
3641  *
3642  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
3643  * """Returns a single frequency mode for velocity at point x,y,z,t
3644  * :param kDir: wave number vector [1/L] with three components
3645  */
3646 
3647 /* Python wrapper */
3648 static PyObject *__pyx_pw_9WaveTools_19vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
3649 static char __pyx_doc_9WaveTools_18vel_mode[] = "vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir)\nReturns a single frequency mode for velocity at point x,y,z,t\n :param kDir: wave number vector [1/L] with three components\n :param omega: angular frequency [1/T]\n :param phi: phase [0,2*pi]\n :param amplitude: wave amplitude [L/T^2]\n :param mwl: mean water level [L]\n :param depth: water depth [L]\n :param g: gravity vector\n :param vDir (vertical direction - opposite to the gravity vector)\n :param comp: component \"x\", \"y\" or \"z\"\n ";
3650 static PyMethodDef __pyx_mdef_9WaveTools_19vel_mode = {"vel_mode", (PyCFunction)__pyx_pw_9WaveTools_19vel_mode, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18vel_mode};
3651 static PyObject *__pyx_pw_9WaveTools_19vel_mode(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
3652  PyObject *__pyx_v_x = 0;
3653  PyObject *__pyx_v_t = 0;
3654  PyObject *__pyx_v_kDir = 0;
3655  PyObject *__pyx_v_kAbs = 0;
3656  PyObject *__pyx_v_omega = 0;
3657  PyObject *__pyx_v_phi = 0;
3658  PyObject *__pyx_v_amplitude = 0;
3659  PyObject *__pyx_v_mwl = 0;
3660  PyObject *__pyx_v_depth = 0;
3661  CYTHON_UNUSED PyObject *__pyx_v_g = 0;
3662  PyObject *__pyx_v_vDir = 0;
3663  int __pyx_lineno = 0;
3664  const char *__pyx_filename = NULL;
3665  int __pyx_clineno = 0;
3666  PyObject *__pyx_r = 0;
3667  __Pyx_RefNannyDeclarations
3668  __Pyx_RefNannySetupContext("vel_mode (wrapper)", 0);
3669  {
3670  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_t,&__pyx_n_s_kDir,&__pyx_n_s_kAbs,&__pyx_n_s_omega,&__pyx_n_s_phi,&__pyx_n_s_amplitude,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_vDir,0};
3671  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
3672  if (unlikely(__pyx_kwds)) {
3673  Py_ssize_t kw_args;
3674  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
3675  switch (pos_args) {
3676  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
3677  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
3678  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
3679  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
3680  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
3681  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3682  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3683  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3684  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3685  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3686  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3687  case 0: break;
3688  default: goto __pyx_L5_argtuple_error;
3689  }
3690  kw_args = PyDict_Size(__pyx_kwds);
3691  switch (pos_args) {
3692  case 0:
3693  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
3694  else goto __pyx_L5_argtuple_error;
3695  case 1:
3696  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
3697  else {
3698  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3699  }
3700  case 2:
3701  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kDir)) != 0)) kw_args--;
3702  else {
3703  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3704  }
3705  case 3:
3706  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kAbs)) != 0)) kw_args--;
3707  else {
3708  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3709  }
3710  case 4:
3711  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
3712  else {
3713  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3714  }
3715  case 5:
3716  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
3717  else {
3718  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3719  }
3720  case 6:
3721  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_amplitude)) != 0)) kw_args--;
3722  else {
3723  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3724  }
3725  case 7:
3726  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
3727  else {
3728  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3729  }
3730  case 8:
3731  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
3732  else {
3733  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3734  }
3735  case 9:
3736  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
3737  else {
3738  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3739  }
3740  case 10:
3741  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vDir)) != 0)) kw_args--;
3742  else {
3743  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3744  }
3745  }
3746  if (unlikely(kw_args > 0)) {
3747  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "vel_mode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3748  }
3749  } else if (PyTuple_GET_SIZE(__pyx_args) != 11) {
3750  goto __pyx_L5_argtuple_error;
3751  } else {
3752  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
3753  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
3754  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
3755  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
3756  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
3757  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
3758  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
3759  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
3760  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
3761  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
3762  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
3763  }
3764  __pyx_v_x = values[0];
3765  __pyx_v_t = values[1];
3766  __pyx_v_kDir = values[2];
3767  __pyx_v_kAbs = values[3];
3768  __pyx_v_omega = values[4];
3769  __pyx_v_phi = values[5];
3770  __pyx_v_amplitude = values[6];
3771  __pyx_v_mwl = values[7];
3772  __pyx_v_depth = values[8];
3773  __pyx_v_g = values[9];
3774  __pyx_v_vDir = values[10];
3775  }
3776  goto __pyx_L4_argument_unpacking_done;
3777  __pyx_L5_argtuple_error:;
3778  __Pyx_RaiseArgtupleInvalid("vel_mode", 1, 11, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
3779  __pyx_L3_error:;
3780  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
3781  __Pyx_RefNannyFinishContext();
3782  return NULL;
3783  __pyx_L4_argument_unpacking_done:;
3784  __pyx_r = __pyx_pf_9WaveTools_18vel_mode(__pyx_self, __pyx_v_x, __pyx_v_t, __pyx_v_kDir, __pyx_v_kAbs, __pyx_v_omega, __pyx_v_phi, __pyx_v_amplitude, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_vDir);
3785 
3786  /* function exit code */
3787  __Pyx_RefNannyFinishContext();
3788  return __pyx_r;
3789 }
3790 
3791 static PyObject *__pyx_pf_9WaveTools_18vel_mode(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t, PyObject *__pyx_v_kDir, PyObject *__pyx_v_kAbs, PyObject *__pyx_v_omega, PyObject *__pyx_v_phi, PyObject *__pyx_v_amplitude, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, CYTHON_UNUSED PyObject *__pyx_v_g, PyObject *__pyx_v_vDir) {
3792  PyObject *__pyx_v_phase = NULL;
3793  PyObject *__pyx_v_Z = NULL;
3794  PyObject *__pyx_v_UH = NULL;
3795  PyObject *__pyx_v_UV = NULL;
3796  CYTHON_UNUSED double __pyx_v_ii;
3797  PyObject *__pyx_v_waveDir = NULL;
3798  PyObject *__pyx_v_V = NULL;
3799  PyObject *__pyx_r = NULL;
3800  __Pyx_RefNannyDeclarations
3801  PyObject *__pyx_t_1 = NULL;
3802  PyObject *__pyx_t_2 = NULL;
3803  PyObject *__pyx_t_3 = NULL;
3804  PyObject *__pyx_t_4 = NULL;
3805  PyObject *__pyx_t_5 = NULL;
3806  PyObject *__pyx_t_6 = NULL;
3807  PyObject *__pyx_t_7 = NULL;
3808  int __pyx_lineno = 0;
3809  const char *__pyx_filename = NULL;
3810  int __pyx_clineno = 0;
3811  __Pyx_RefNannySetupContext("vel_mode", 0);
3812 
3813  /* "WaveTools.pyx":126
3814  * """
3815  *
3816  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi # <<<<<<<<<<<<<<
3817  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3818  * UH = 0.
3819  */
3820  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3821  __Pyx_GOTREF(__pyx_t_1);
3822  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_kDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3823  __Pyx_GOTREF(__pyx_t_2);
3824  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3825  __Pyx_GOTREF(__pyx_t_3);
3826  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3827  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3828  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3829  __Pyx_GOTREF(__pyx_t_2);
3830  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_kDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3831  __Pyx_GOTREF(__pyx_t_1);
3832  __pyx_t_4 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3833  __Pyx_GOTREF(__pyx_t_4);
3834  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3835  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3836  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3837  __Pyx_GOTREF(__pyx_t_1);
3838  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3839  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3840  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3841  __Pyx_GOTREF(__pyx_t_4);
3842  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_kDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3843  __Pyx_GOTREF(__pyx_t_3);
3844  __pyx_t_2 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3845  __Pyx_GOTREF(__pyx_t_2);
3846  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3847  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3848  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3849  __Pyx_GOTREF(__pyx_t_3);
3850  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3851  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3852  __pyx_t_2 = PyNumber_Multiply(__pyx_v_omega, __pyx_v_t); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3853  __Pyx_GOTREF(__pyx_t_2);
3854  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3855  __Pyx_GOTREF(__pyx_t_1);
3856  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3857  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3858  __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_phi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3859  __Pyx_GOTREF(__pyx_t_2);
3860  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3861  __pyx_v_phase = __pyx_t_2;
3862  __pyx_t_2 = 0;
3863 
3864  /* "WaveTools.pyx":127
3865  *
3866  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3867  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl # <<<<<<<<<<<<<<
3868  * UH = 0.
3869  * UV=0.
3870  */
3871  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3872  __Pyx_GOTREF(__pyx_t_2);
3873  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3874  __Pyx_GOTREF(__pyx_t_1);
3875  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3876  __Pyx_GOTREF(__pyx_t_3);
3877  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3878  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3879  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3880  __Pyx_GOTREF(__pyx_t_1);
3881  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_x, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3882  __Pyx_GOTREF(__pyx_t_2);
3883  __pyx_t_4 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3884  __Pyx_GOTREF(__pyx_t_4);
3885  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3886  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3887  __pyx_t_2 = PyNumber_Add(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3888  __Pyx_GOTREF(__pyx_t_2);
3889  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3890  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3891  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3892  __Pyx_GOTREF(__pyx_t_4);
3893  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_x, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
3894  __Pyx_GOTREF(__pyx_t_3);
3895  __pyx_t_1 = PyNumber_Multiply(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3896  __Pyx_GOTREF(__pyx_t_1);
3897  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3898  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3899  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3900  __Pyx_GOTREF(__pyx_t_3);
3901  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3902  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3903  __pyx_t_1 = PyNumber_Subtract(__pyx_t_3, __pyx_v_mwl); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3904  __Pyx_GOTREF(__pyx_t_1);
3905  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3906  __pyx_v_Z = __pyx_t_1;
3907  __pyx_t_1 = 0;
3908 
3909  /* "WaveTools.pyx":128
3910  * phase = x[0]*kDir[0]+x[1]*kDir[1]+x[2]*kDir[2] - omega*t + phi
3911  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3912  * UH = 0. # <<<<<<<<<<<<<<
3913  * UV=0.
3914  * ii=0.
3915  */
3916  __Pyx_INCREF(__pyx_float_0_);
3917  __pyx_v_UH = __pyx_float_0_;
3918 
3919  /* "WaveTools.pyx":129
3920  * Z = (vDir[0]*x[0] + vDir[1]*x[1]+ vDir[2]*x[2]) - mwl
3921  * UH = 0.
3922  * UV=0. # <<<<<<<<<<<<<<
3923  * ii=0.
3924  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
3925  */
3926  __Pyx_INCREF(__pyx_float_0_);
3927  __pyx_v_UV = __pyx_float_0_;
3928 
3929  /* "WaveTools.pyx":130
3930  * UH = 0.
3931  * UV=0.
3932  * ii=0. # <<<<<<<<<<<<<<
3933  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
3934  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
3935  */
3936  __pyx_v_ii = 0.;
3937 
3938  /* "WaveTools.pyx":131
3939  * UV=0.
3940  * ii=0.
3941  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
3942  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
3943  * waveDir = kDir/kAbs
3944  */
3945  __pyx_t_1 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3946  __Pyx_GOTREF(__pyx_t_1);
3947  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_cosh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3948  __Pyx_GOTREF(__pyx_t_2);
3949  __pyx_t_4 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3950  __Pyx_GOTREF(__pyx_t_4);
3951  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3952  __Pyx_GOTREF(__pyx_t_5);
3953  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
3954  __pyx_t_4 = NULL;
3955  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
3956  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
3957  if (likely(__pyx_t_4)) {
3958  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
3959  __Pyx_INCREF(__pyx_t_4);
3960  __Pyx_INCREF(function);
3961  __Pyx_DECREF_SET(__pyx_t_2, function);
3962  }
3963  }
3964  if (!__pyx_t_4) {
3965  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3966  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
3967  __Pyx_GOTREF(__pyx_t_3);
3968  } else {
3969  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3970  __Pyx_GOTREF(__pyx_t_6);
3971  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
3972  __Pyx_GIVEREF(__pyx_t_5);
3973  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
3974  __pyx_t_5 = 0;
3975  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3976  __Pyx_GOTREF(__pyx_t_3);
3977  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
3978  }
3979  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
3980  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3981  __Pyx_GOTREF(__pyx_t_2);
3982  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
3983  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
3984  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3985  __Pyx_GOTREF(__pyx_t_1);
3986  __pyx_t_6 = NULL;
3987  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
3988  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
3989  if (likely(__pyx_t_6)) {
3990  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
3991  __Pyx_INCREF(__pyx_t_6);
3992  __Pyx_INCREF(function);
3993  __Pyx_DECREF_SET(__pyx_t_1, function);
3994  }
3995  }
3996  if (!__pyx_t_6) {
3997  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
3998  __Pyx_GOTREF(__pyx_t_3);
3999  } else {
4000  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4001  __Pyx_GOTREF(__pyx_t_5);
4002  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4003  __Pyx_INCREF(__pyx_v_phase);
4004  __Pyx_GIVEREF(__pyx_v_phase);
4005  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_phase);
4006  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4007  __Pyx_GOTREF(__pyx_t_3);
4008  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4009  }
4010  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4011  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4012  __Pyx_GOTREF(__pyx_t_1);
4013  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4014  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4015  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4016  __Pyx_GOTREF(__pyx_t_2);
4017  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4018  __Pyx_GOTREF(__pyx_t_5);
4019  __pyx_t_6 = NULL;
4020  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4021  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4022  if (likely(__pyx_t_6)) {
4023  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4024  __Pyx_INCREF(__pyx_t_6);
4025  __Pyx_INCREF(function);
4026  __Pyx_DECREF_SET(__pyx_t_2, function);
4027  }
4028  }
4029  if (!__pyx_t_6) {
4030  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4031  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4032  __Pyx_GOTREF(__pyx_t_3);
4033  } else {
4034  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4035  __Pyx_GOTREF(__pyx_t_4);
4036  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
4037  __Pyx_GIVEREF(__pyx_t_5);
4038  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4039  __pyx_t_5 = 0;
4040  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4041  __Pyx_GOTREF(__pyx_t_3);
4042  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4043  }
4044  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4045  __pyx_t_2 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4046  __Pyx_GOTREF(__pyx_t_2);
4047  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4048  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4049  __Pyx_DECREF_SET(__pyx_v_UH, __pyx_t_2);
4050  __pyx_t_2 = 0;
4051 
4052  /* "WaveTools.pyx":132
4053  * ii=0.
4054  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
4055  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth) # <<<<<<<<<<<<<<
4056  * waveDir = kDir/kAbs
4057  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4058  */
4059  __pyx_t_2 = PyNumber_Multiply(__pyx_v_amplitude, __pyx_v_omega); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4060  __Pyx_GOTREF(__pyx_t_2);
4061  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4062  __Pyx_GOTREF(__pyx_t_1);
4063  __pyx_t_4 = PyNumber_Add(__pyx_v_Z, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4064  __Pyx_GOTREF(__pyx_t_4);
4065  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4066  __Pyx_GOTREF(__pyx_t_5);
4067  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4068  __pyx_t_4 = NULL;
4069  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4070  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
4071  if (likely(__pyx_t_4)) {
4072  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4073  __Pyx_INCREF(__pyx_t_4);
4074  __Pyx_INCREF(function);
4075  __Pyx_DECREF_SET(__pyx_t_1, function);
4076  }
4077  }
4078  if (!__pyx_t_4) {
4079  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4080  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4081  __Pyx_GOTREF(__pyx_t_3);
4082  } else {
4083  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4084  __Pyx_GOTREF(__pyx_t_6);
4085  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
4086  __Pyx_GIVEREF(__pyx_t_5);
4087  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_5);
4088  __pyx_t_5 = 0;
4089  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4090  __Pyx_GOTREF(__pyx_t_3);
4091  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4092  }
4093  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4094  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4095  __Pyx_GOTREF(__pyx_t_1);
4096  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4097  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4098  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sin); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4099  __Pyx_GOTREF(__pyx_t_2);
4100  __pyx_t_6 = NULL;
4101  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4102  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4103  if (likely(__pyx_t_6)) {
4104  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4105  __Pyx_INCREF(__pyx_t_6);
4106  __Pyx_INCREF(function);
4107  __Pyx_DECREF_SET(__pyx_t_2, function);
4108  }
4109  }
4110  if (!__pyx_t_6) {
4111  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4112  __Pyx_GOTREF(__pyx_t_3);
4113  } else {
4114  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4115  __Pyx_GOTREF(__pyx_t_5);
4116  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4117  __Pyx_INCREF(__pyx_v_phase);
4118  __Pyx_GIVEREF(__pyx_v_phase);
4119  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_phase);
4120  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4121  __Pyx_GOTREF(__pyx_t_3);
4122  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4123  }
4124  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4125  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4126  __Pyx_GOTREF(__pyx_t_2);
4127  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4128  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4129  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4130  __Pyx_GOTREF(__pyx_t_1);
4131  __pyx_t_5 = PyNumber_Multiply(__pyx_v_kAbs, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4132  __Pyx_GOTREF(__pyx_t_5);
4133  __pyx_t_6 = NULL;
4134  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4135  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
4136  if (likely(__pyx_t_6)) {
4137  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4138  __Pyx_INCREF(__pyx_t_6);
4139  __Pyx_INCREF(function);
4140  __Pyx_DECREF_SET(__pyx_t_1, function);
4141  }
4142  }
4143  if (!__pyx_t_6) {
4144  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4145  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4146  __Pyx_GOTREF(__pyx_t_3);
4147  } else {
4148  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4149  __Pyx_GOTREF(__pyx_t_4);
4150  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_6); __pyx_t_6 = NULL;
4151  __Pyx_GIVEREF(__pyx_t_5);
4152  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4153  __pyx_t_5 = 0;
4154  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4155  __Pyx_GOTREF(__pyx_t_3);
4156  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4157  }
4158  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4159  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4160  __Pyx_GOTREF(__pyx_t_1);
4161  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4162  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4163  __Pyx_DECREF_SET(__pyx_v_UV, __pyx_t_1);
4164  __pyx_t_1 = 0;
4165 
4166  /* "WaveTools.pyx":133
4167  * UH=amplitude*omega*cosh(kAbs*(Z + depth))*cos( phase )/sinh(kAbs*depth)
4168  * UV=amplitude*omega*sinh(kAbs*(Z + depth))*sin( phase )/sinh(kAbs*depth)
4169  * waveDir = kDir/kAbs # <<<<<<<<<<<<<<
4170  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4171  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4172  */
4173  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_kDir, __pyx_v_kAbs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4174  __Pyx_GOTREF(__pyx_t_1);
4175  __pyx_v_waveDir = __pyx_t_1;
4176  __pyx_t_1 = 0;
4177 
4178  /* "WaveTools.pyx":135
4179  * waveDir = kDir/kAbs
4180  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4181  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
4182  * UH*waveDir[1]+UV*vDir[1],
4183  * UH*waveDir[2]+UV*vDir[2]])
4184  */
4185  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4186  __Pyx_GOTREF(__pyx_t_3);
4187  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4188  __Pyx_GOTREF(__pyx_t_2);
4189  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4190  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_waveDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4191  __Pyx_GOTREF(__pyx_t_3);
4192  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4193  __Pyx_GOTREF(__pyx_t_4);
4194  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4195  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_vDir, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4196  __Pyx_GOTREF(__pyx_t_3);
4197  __pyx_t_5 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4198  __Pyx_GOTREF(__pyx_t_5);
4199  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4200  __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4201  __Pyx_GOTREF(__pyx_t_3);
4202  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4203  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4204 
4205  /* "WaveTools.pyx":136
4206  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4207  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4208  * UH*waveDir[1]+UV*vDir[1], # <<<<<<<<<<<<<<
4209  * UH*waveDir[2]+UV*vDir[2]])
4210  * return V
4211  */
4212  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_waveDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4213  __Pyx_GOTREF(__pyx_t_5);
4214  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4215  __Pyx_GOTREF(__pyx_t_4);
4216  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4217  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_vDir, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4218  __Pyx_GOTREF(__pyx_t_5);
4219  __pyx_t_6 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4220  __Pyx_GOTREF(__pyx_t_6);
4221  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4222  __pyx_t_5 = PyNumber_Add(__pyx_t_4, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4223  __Pyx_GOTREF(__pyx_t_5);
4224  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4225  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4226 
4227  /* "WaveTools.pyx":137
4228  * V = np.array([UH*waveDir[0]+UV*vDir[0],
4229  * UH*waveDir[1]+UV*vDir[1],
4230  * UH*waveDir[2]+UV*vDir[2]]) # <<<<<<<<<<<<<<
4231  * return V
4232  *
4233  */
4234  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_waveDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4235  __Pyx_GOTREF(__pyx_t_6);
4236  __pyx_t_4 = PyNumber_Multiply(__pyx_v_UH, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4237  __Pyx_GOTREF(__pyx_t_4);
4238  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4239  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_vDir, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
4240  __Pyx_GOTREF(__pyx_t_6);
4241  __pyx_t_7 = PyNumber_Multiply(__pyx_v_UV, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4242  __Pyx_GOTREF(__pyx_t_7);
4243  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4244  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4245  __Pyx_GOTREF(__pyx_t_6);
4246  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4247  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4248 
4249  /* "WaveTools.pyx":135
4250  * waveDir = kDir/kAbs
4251  * #waves(period = 1./self.fi[ii], waveHeight = 2.*self.ai[ii],mwl = self.mwl, depth = self.d,g = self.g,waveDir = self.waveDir,wavelength=self.wi[ii], phi0 = self.phi[ii]).u(x,y,z,t)
4252  * V = np.array([UH*waveDir[0]+UV*vDir[0], # <<<<<<<<<<<<<<
4253  * UH*waveDir[1]+UV*vDir[1],
4254  * UH*waveDir[2]+UV*vDir[2]])
4255  */
4256  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4257  __Pyx_GOTREF(__pyx_t_7);
4258  __Pyx_GIVEREF(__pyx_t_3);
4259  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
4260  __Pyx_GIVEREF(__pyx_t_5);
4261  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
4262  __Pyx_GIVEREF(__pyx_t_6);
4263  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
4264  __pyx_t_3 = 0;
4265  __pyx_t_5 = 0;
4266  __pyx_t_6 = 0;
4267  __pyx_t_6 = NULL;
4268  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4269  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
4270  if (likely(__pyx_t_6)) {
4271  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4272  __Pyx_INCREF(__pyx_t_6);
4273  __Pyx_INCREF(function);
4274  __Pyx_DECREF_SET(__pyx_t_2, function);
4275  }
4276  }
4277  if (!__pyx_t_6) {
4278  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4279  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
4280  __Pyx_GOTREF(__pyx_t_1);
4281  } else {
4282  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4283  __Pyx_GOTREF(__pyx_t_5);
4284  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
4285  __Pyx_GIVEREF(__pyx_t_7);
4286  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_7);
4287  __pyx_t_7 = 0;
4288  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4289  __Pyx_GOTREF(__pyx_t_1);
4290  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4291  }
4292  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4293  __pyx_v_V = __pyx_t_1;
4294  __pyx_t_1 = 0;
4295 
4296  /* "WaveTools.pyx":138
4297  * UH*waveDir[1]+UV*vDir[1],
4298  * UH*waveDir[2]+UV*vDir[2]])
4299  * return V # <<<<<<<<<<<<<<
4300  *
4301  *
4302  */
4303  __Pyx_XDECREF(__pyx_r);
4304  __Pyx_INCREF(__pyx_v_V);
4305  __pyx_r = __pyx_v_V;
4306  goto __pyx_L0;
4307 
4308  /* "WaveTools.pyx":113
4309  *
4310  *
4311  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
4312  * """Returns a single frequency mode for velocity at point x,y,z,t
4313  * :param kDir: wave number vector [1/L] with three components
4314  */
4315 
4316  /* function exit code */
4317  __pyx_L1_error:;
4318  __Pyx_XDECREF(__pyx_t_1);
4319  __Pyx_XDECREF(__pyx_t_2);
4320  __Pyx_XDECREF(__pyx_t_3);
4321  __Pyx_XDECREF(__pyx_t_4);
4322  __Pyx_XDECREF(__pyx_t_5);
4323  __Pyx_XDECREF(__pyx_t_6);
4324  __Pyx_XDECREF(__pyx_t_7);
4325  __Pyx_AddTraceback("WaveTools.vel_mode", __pyx_clineno, __pyx_lineno, __pyx_filename);
4326  __pyx_r = NULL;
4327  __pyx_L0:;
4328  __Pyx_XDECREF(__pyx_v_phase);
4329  __Pyx_XDECREF(__pyx_v_Z);
4330  __Pyx_XDECREF(__pyx_v_UH);
4331  __Pyx_XDECREF(__pyx_v_UV);
4332  __Pyx_XDECREF(__pyx_v_waveDir);
4333  __Pyx_XDECREF(__pyx_v_V);
4334  __Pyx_XGIVEREF(__pyx_r);
4335  __Pyx_RefNannyFinishContext();
4336  return __pyx_r;
4337 }
4338 
4339 /* "WaveTools.pyx":142
4340  *
4341  *
4342  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
4343  * """sigma function for JONSWAP spectrum
4344  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4345  */
4346 
4347 /* Python wrapper */
4348 static PyObject *__pyx_pw_9WaveTools_21sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4349 static char __pyx_doc_9WaveTools_20sigma[] = "sigma(omega, omega0)\nsigma function for JONSWAP spectrum\n http://www.wikiwaves.org/Ocean-Wave_Sectra\n ";
4350 static PyMethodDef __pyx_mdef_9WaveTools_21sigma = {"sigma", (PyCFunction)__pyx_pw_9WaveTools_21sigma, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_20sigma};
4351 static PyObject *__pyx_pw_9WaveTools_21sigma(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4352  PyObject *__pyx_v_omega = 0;
4353  PyObject *__pyx_v_omega0 = 0;
4354  int __pyx_lineno = 0;
4355  const char *__pyx_filename = NULL;
4356  int __pyx_clineno = 0;
4357  PyObject *__pyx_r = 0;
4358  __Pyx_RefNannyDeclarations
4359  __Pyx_RefNannySetupContext("sigma (wrapper)", 0);
4360  {
4361  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_omega,&__pyx_n_s_omega0,0};
4362  PyObject* values[2] = {0,0};
4363  if (unlikely(__pyx_kwds)) {
4364  Py_ssize_t kw_args;
4365  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4366  switch (pos_args) {
4367  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4368  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4369  case 0: break;
4370  default: goto __pyx_L5_argtuple_error;
4371  }
4372  kw_args = PyDict_Size(__pyx_kwds);
4373  switch (pos_args) {
4374  case 0:
4375  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega)) != 0)) kw_args--;
4376  else goto __pyx_L5_argtuple_error;
4377  case 1:
4378  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_omega0)) != 0)) kw_args--;
4379  else {
4380  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4381  }
4382  }
4383  if (unlikely(kw_args > 0)) {
4384  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sigma") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4385  }
4386  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
4387  goto __pyx_L5_argtuple_error;
4388  } else {
4389  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4390  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4391  }
4392  __pyx_v_omega = values[0];
4393  __pyx_v_omega0 = values[1];
4394  }
4395  goto __pyx_L4_argument_unpacking_done;
4396  __pyx_L5_argtuple_error:;
4397  __Pyx_RaiseArgtupleInvalid("sigma", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4398  __pyx_L3_error:;
4399  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
4400  __Pyx_RefNannyFinishContext();
4401  return NULL;
4402  __pyx_L4_argument_unpacking_done:;
4403  __pyx_r = __pyx_pf_9WaveTools_20sigma(__pyx_self, __pyx_v_omega, __pyx_v_omega0);
4404 
4405  /* function exit code */
4406  __Pyx_RefNannyFinishContext();
4407  return __pyx_r;
4408 }
4409 
4410 static PyObject *__pyx_pf_9WaveTools_20sigma(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_omega, PyObject *__pyx_v_omega0) {
4411  PyObject *__pyx_v_sigmaReturn = NULL;
4412  PyObject *__pyx_r = NULL;
4413  __Pyx_RefNannyDeclarations
4414  PyObject *__pyx_t_1 = NULL;
4415  PyObject *__pyx_t_2 = NULL;
4416  PyObject *__pyx_t_3 = NULL;
4417  PyObject *__pyx_t_4 = NULL;
4418  Py_ssize_t __pyx_t_5;
4419  PyObject *__pyx_t_6 = NULL;
4420  int __pyx_lineno = 0;
4421  const char *__pyx_filename = NULL;
4422  int __pyx_clineno = 0;
4423  __Pyx_RefNannySetupContext("sigma", 0);
4424 
4425  /* "WaveTools.pyx":146
4426  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4427  * """
4428  * sigmaReturn = np.where(omega > omega0,0.09,0.07) # <<<<<<<<<<<<<<
4429  * return sigmaReturn
4430  *
4431  */
4432  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4433  __Pyx_GOTREF(__pyx_t_2);
4434  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4435  __Pyx_GOTREF(__pyx_t_3);
4436  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4437  __pyx_t_2 = PyObject_RichCompare(__pyx_v_omega, __pyx_v_omega0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4438  __pyx_t_4 = NULL;
4439  __pyx_t_5 = 0;
4440  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
4441  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
4442  if (likely(__pyx_t_4)) {
4443  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
4444  __Pyx_INCREF(__pyx_t_4);
4445  __Pyx_INCREF(function);
4446  __Pyx_DECREF_SET(__pyx_t_3, function);
4447  __pyx_t_5 = 1;
4448  }
4449  }
4450  __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4451  __Pyx_GOTREF(__pyx_t_6);
4452  if (__pyx_t_4) {
4453  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
4454  }
4455  __Pyx_GIVEREF(__pyx_t_2);
4456  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_2);
4457  __Pyx_INCREF(__pyx_float_0_09);
4458  __Pyx_GIVEREF(__pyx_float_0_09);
4459  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_float_0_09);
4460  __Pyx_INCREF(__pyx_float_0_07);
4461  __Pyx_GIVEREF(__pyx_float_0_07);
4462  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_float_0_07);
4463  __pyx_t_2 = 0;
4464  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4465  __Pyx_GOTREF(__pyx_t_1);
4466  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
4467  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4468  __pyx_v_sigmaReturn = __pyx_t_1;
4469  __pyx_t_1 = 0;
4470 
4471  /* "WaveTools.pyx":147
4472  * """
4473  * sigmaReturn = np.where(omega > omega0,0.09,0.07)
4474  * return sigmaReturn # <<<<<<<<<<<<<<
4475  *
4476  *
4477  */
4478  __Pyx_XDECREF(__pyx_r);
4479  __Pyx_INCREF(__pyx_v_sigmaReturn);
4480  __pyx_r = __pyx_v_sigmaReturn;
4481  goto __pyx_L0;
4482 
4483  /* "WaveTools.pyx":142
4484  *
4485  *
4486  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
4487  * """sigma function for JONSWAP spectrum
4488  * http://www.wikiwaves.org/Ocean-Wave_Sectra
4489  */
4490 
4491  /* function exit code */
4492  __pyx_L1_error:;
4493  __Pyx_XDECREF(__pyx_t_1);
4494  __Pyx_XDECREF(__pyx_t_2);
4495  __Pyx_XDECREF(__pyx_t_3);
4496  __Pyx_XDECREF(__pyx_t_4);
4497  __Pyx_XDECREF(__pyx_t_6);
4498  __Pyx_AddTraceback("WaveTools.sigma", __pyx_clineno, __pyx_lineno, __pyx_filename);
4499  __pyx_r = NULL;
4500  __pyx_L0:;
4501  __Pyx_XDECREF(__pyx_v_sigmaReturn);
4502  __Pyx_XGIVEREF(__pyx_r);
4503  __Pyx_RefNannyFinishContext();
4504  return __pyx_r;
4505 }
4506 
4507 /* "WaveTools.pyx":150
4508  *
4509  *
4510  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
4511  * """The wave spectrum from Joint North Sea Wave Observation Project
4512  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
4513  */
4514 
4515 /* Python wrapper */
4516 static PyObject *__pyx_pw_9WaveTools_23JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
4517 static char __pyx_doc_9WaveTools_22JONSWAP[] = "JONSWAP(f, f0, Hs, gamma=3.3, TMA=False, depth=None)\nThe wave spectrum from Joint North Sea Wave Observation Project\n Jonswap equation from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15\n TMA modification from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.19\n :param f: wave frequency [1/T] (not angular frequency)\n :param f0: direcpeak frequency [1/T] (not angular frequency)\n :param Hs: significant wave height [L]\n :param g: gravity [L/T^2]\n :param gamma: peak enhancement factor [-]\n ";
4518 static PyMethodDef __pyx_mdef_9WaveTools_23JONSWAP = {"JONSWAP", (PyCFunction)__pyx_pw_9WaveTools_23JONSWAP, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_22JONSWAP};
4519 static PyObject *__pyx_pw_9WaveTools_23JONSWAP(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
4520  PyObject *__pyx_v_f = 0;
4521  PyObject *__pyx_v_f0 = 0;
4522  PyObject *__pyx_v_Hs = 0;
4523  PyObject *__pyx_v_gamma = 0;
4524  PyObject *__pyx_v_TMA = 0;
4525  PyObject *__pyx_v_depth = 0;
4526  int __pyx_lineno = 0;
4527  const char *__pyx_filename = NULL;
4528  int __pyx_clineno = 0;
4529  PyObject *__pyx_r = 0;
4530  __Pyx_RefNannyDeclarations
4531  __Pyx_RefNannySetupContext("JONSWAP (wrapper)", 0);
4532  {
4533  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,&__pyx_n_s_gamma,&__pyx_n_s_TMA,&__pyx_n_s_depth,0};
4534  PyObject* values[6] = {0,0,0,0,0,0};
4535  values[3] = ((PyObject *)__pyx_float_3_3);
4536  values[4] = ((PyObject *)Py_False);
4537  values[5] = ((PyObject *)Py_None);
4538  if (unlikely(__pyx_kwds)) {
4539  Py_ssize_t kw_args;
4540  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
4541  switch (pos_args) {
4542  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4543  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4544  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4545  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4546  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4547  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4548  case 0: break;
4549  default: goto __pyx_L5_argtuple_error;
4550  }
4551  kw_args = PyDict_Size(__pyx_kwds);
4552  switch (pos_args) {
4553  case 0:
4554  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
4555  else goto __pyx_L5_argtuple_error;
4556  case 1:
4557  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
4558  else {
4559  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4560  }
4561  case 2:
4562  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
4563  else {
4564  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4565  }
4566  case 3:
4567  if (kw_args > 0) {
4568  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_gamma);
4569  if (value) { values[3] = value; kw_args--; }
4570  }
4571  case 4:
4572  if (kw_args > 0) {
4573  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_TMA);
4574  if (value) { values[4] = value; kw_args--; }
4575  }
4576  case 5:
4577  if (kw_args > 0) {
4578  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth);
4579  if (value) { values[5] = value; kw_args--; }
4580  }
4581  }
4582  if (unlikely(kw_args > 0)) {
4583  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "JONSWAP") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4584  }
4585  } else {
4586  switch (PyTuple_GET_SIZE(__pyx_args)) {
4587  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
4588  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
4589  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
4590  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
4591  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
4592  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
4593  break;
4594  default: goto __pyx_L5_argtuple_error;
4595  }
4596  }
4597  __pyx_v_f = values[0];
4598  __pyx_v_f0 = values[1];
4599  __pyx_v_Hs = values[2];
4600  __pyx_v_gamma = values[3];
4601  __pyx_v_TMA = values[4];
4602  __pyx_v_depth = values[5];
4603  }
4604  goto __pyx_L4_argument_unpacking_done;
4605  __pyx_L5_argtuple_error:;
4606  __Pyx_RaiseArgtupleInvalid("JONSWAP", 0, 3, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
4607  __pyx_L3_error:;
4608  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
4609  __Pyx_RefNannyFinishContext();
4610  return NULL;
4611  __pyx_L4_argument_unpacking_done:;
4612  __pyx_r = __pyx_pf_9WaveTools_22JONSWAP(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs, __pyx_v_gamma, __pyx_v_TMA, __pyx_v_depth);
4613 
4614  /* function exit code */
4615  __Pyx_RefNannyFinishContext();
4616  return __pyx_r;
4617 }
4618 
4619 static PyObject *__pyx_pf_9WaveTools_22JONSWAP(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs, PyObject *__pyx_v_gamma, PyObject *__pyx_v_TMA, PyObject *__pyx_v_depth) {
4620  PyObject *__pyx_v_Tp = NULL;
4621  PyObject *__pyx_v_bj = NULL;
4622  PyObject *__pyx_v_r = NULL;
4623  PyObject *__pyx_v_tma = NULL;
4624  PyObject *__pyx_v_k = NULL;
4625  PyObject *__pyx_r = NULL;
4626  __Pyx_RefNannyDeclarations
4627  PyObject *__pyx_t_1 = NULL;
4628  PyObject *__pyx_t_2 = NULL;
4629  PyObject *__pyx_t_3 = NULL;
4630  PyObject *__pyx_t_4 = NULL;
4631  PyObject *__pyx_t_5 = NULL;
4632  PyObject *__pyx_t_6 = NULL;
4633  Py_ssize_t __pyx_t_7;
4634  PyObject *__pyx_t_8 = NULL;
4635  int __pyx_t_9;
4636  int __pyx_lineno = 0;
4637  const char *__pyx_filename = NULL;
4638  int __pyx_clineno = 0;
4639  __Pyx_RefNannySetupContext("JONSWAP", 0);
4640 
4641  /* "WaveTools.pyx":160
4642  * :param gamma: peak enhancement factor [-]
4643  * """
4644  * Tp = 1./f0 # <<<<<<<<<<<<<<
4645  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4646  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4647  */
4648  __pyx_t_1 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_v_f0, 1., 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 160; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4649  __Pyx_GOTREF(__pyx_t_1);
4650  __pyx_v_Tp = __pyx_t_1;
4651  __pyx_t_1 = 0;
4652 
4653  /* "WaveTools.pyx":161
4654  * """
4655  * Tp = 1./f0
4656  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma)) # <<<<<<<<<<<<<<
4657  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4658  * tma = 1.
4659  */
4660  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_log); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4661  __Pyx_GOTREF(__pyx_t_2);
4662  __pyx_t_3 = NULL;
4663  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4664  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
4665  if (likely(__pyx_t_3)) {
4666  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4667  __Pyx_INCREF(__pyx_t_3);
4668  __Pyx_INCREF(function);
4669  __Pyx_DECREF_SET(__pyx_t_2, function);
4670  }
4671  }
4672  if (!__pyx_t_3) {
4673  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_gamma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4674  __Pyx_GOTREF(__pyx_t_1);
4675  } else {
4676  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4677  __Pyx_GOTREF(__pyx_t_4);
4678  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
4679  __Pyx_INCREF(__pyx_v_gamma);
4680  __Pyx_GIVEREF(__pyx_v_gamma);
4681  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_gamma);
4682  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4683  __Pyx_GOTREF(__pyx_t_1);
4684  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4685  }
4686  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4687  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_01915, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4688  __Pyx_GOTREF(__pyx_t_2);
4689  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4690  __pyx_t_1 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_094, __pyx_t_2, 1.094, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4691  __Pyx_GOTREF(__pyx_t_1);
4692  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4693  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_0624, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4694  __Pyx_GOTREF(__pyx_t_2);
4695  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4696  __pyx_t_1 = PyNumber_Multiply(__pyx_float_0_0336, __pyx_v_gamma); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4697  __Pyx_GOTREF(__pyx_t_1);
4698  __pyx_t_4 = __Pyx_PyFloat_AddCObj(__pyx_float_0_23, __pyx_t_1, 0.23, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4699  __Pyx_GOTREF(__pyx_t_4);
4700  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4701  __pyx_t_1 = __Pyx_PyFloat_AddCObj(__pyx_float_1_9, __pyx_v_gamma, 1.9, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4702  __Pyx_GOTREF(__pyx_t_1);
4703  __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_0_185, __pyx_t_1, 0.185, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4704  __Pyx_GOTREF(__pyx_t_3);
4705  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4706  __pyx_t_1 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4707  __Pyx_GOTREF(__pyx_t_1);
4708  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4709  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4710  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4711  __Pyx_GOTREF(__pyx_t_3);
4712  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4713  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4714  __pyx_v_bj = __pyx_t_3;
4715  __pyx_t_3 = 0;
4716 
4717  /* "WaveTools.pyx":162
4718  * Tp = 1./f0
4719  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4720  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2)) # <<<<<<<<<<<<<<
4721  * tma = 1.
4722  * if TMA:
4723  */
4724  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4725  __Pyx_GOTREF(__pyx_t_1);
4726  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4727  __Pyx_GOTREF(__pyx_t_2);
4728  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4729  __pyx_t_1 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4730  __Pyx_GOTREF(__pyx_t_1);
4731  __pyx_t_4 = __Pyx_PyFloat_SubtractObjC(__pyx_t_1, __pyx_float_1_, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4732  __Pyx_GOTREF(__pyx_t_4);
4733  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4734  __pyx_t_1 = PyNumber_Power(__pyx_t_4, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4735  __Pyx_GOTREF(__pyx_t_1);
4736  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4737  __pyx_t_4 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4738  __Pyx_GOTREF(__pyx_t_4);
4739  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4740  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sigma); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4741  __Pyx_GOTREF(__pyx_t_5);
4742  __pyx_t_6 = NULL;
4743  __pyx_t_7 = 0;
4744  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
4745  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
4746  if (likely(__pyx_t_6)) {
4747  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
4748  __Pyx_INCREF(__pyx_t_6);
4749  __Pyx_INCREF(function);
4750  __Pyx_DECREF_SET(__pyx_t_5, function);
4751  __pyx_t_7 = 1;
4752  }
4753  }
4754  __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4755  __Pyx_GOTREF(__pyx_t_8);
4756  if (__pyx_t_6) {
4757  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
4758  }
4759  __Pyx_INCREF(__pyx_v_f);
4760  __Pyx_GIVEREF(__pyx_v_f);
4761  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, __pyx_v_f);
4762  __Pyx_INCREF(__pyx_v_f0);
4763  __Pyx_GIVEREF(__pyx_v_f0);
4764  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_v_f0);
4765  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4766  __Pyx_GOTREF(__pyx_t_1);
4767  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
4768  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4769  __pyx_t_5 = PyNumber_Power(__pyx_t_1, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4770  __Pyx_GOTREF(__pyx_t_5);
4771  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4772  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4773  __Pyx_GOTREF(__pyx_t_1);
4774  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4775  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4776  __Pyx_GOTREF(__pyx_t_5);
4777  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4778  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4779  __pyx_t_1 = NULL;
4780  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4781  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
4782  if (likely(__pyx_t_1)) {
4783  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4784  __Pyx_INCREF(__pyx_t_1);
4785  __Pyx_INCREF(function);
4786  __Pyx_DECREF_SET(__pyx_t_2, function);
4787  }
4788  }
4789  if (!__pyx_t_1) {
4790  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4791  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4792  __Pyx_GOTREF(__pyx_t_3);
4793  } else {
4794  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4795  __Pyx_GOTREF(__pyx_t_4);
4796  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
4797  __Pyx_GIVEREF(__pyx_t_5);
4798  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
4799  __pyx_t_5 = 0;
4800  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4801  __Pyx_GOTREF(__pyx_t_3);
4802  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4803  }
4804  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4805  __pyx_v_r = __pyx_t_3;
4806  __pyx_t_3 = 0;
4807 
4808  /* "WaveTools.pyx":163
4809  * bj = 0.0624*(1.094-0.01915*log(gamma))/(0.23+0.0336*gamma-0.185/(1.9+gamma))
4810  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4811  * tma = 1. # <<<<<<<<<<<<<<
4812  * if TMA:
4813  * if (depth == None):
4814  */
4815  __Pyx_INCREF(__pyx_float_1_);
4816  __pyx_v_tma = __pyx_float_1_;
4817 
4818  /* "WaveTools.pyx":164
4819  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
4820  * tma = 1.
4821  * if TMA: # <<<<<<<<<<<<<<
4822  * if (depth == None):
4823  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4824  */
4825  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_TMA); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4826  if (__pyx_t_9) {
4827 
4828  /* "WaveTools.pyx":165
4829  * tma = 1.
4830  * if TMA:
4831  * if (depth == None): # <<<<<<<<<<<<<<
4832  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4833  * logEvent("Wavetools:py. Stopping simulation")
4834  */
4835  __pyx_t_3 = PyObject_RichCompare(__pyx_v_depth, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4836  __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4837  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4838  if (__pyx_t_9) {
4839 
4840  /* "WaveTools.pyx":166
4841  * if TMA:
4842  * if (depth == None):
4843  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum") # <<<<<<<<<<<<<<
4844  * logEvent("Wavetools:py. Stopping simulation")
4845  * sys.exit(1)
4846  */
4847  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4848  __Pyx_GOTREF(__pyx_t_3);
4849  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4850  __Pyx_GOTREF(__pyx_t_2);
4851  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4852  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4853 
4854  /* "WaveTools.pyx":167
4855  * if (depth == None):
4856  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4857  * logEvent("Wavetools:py. Stopping simulation") # <<<<<<<<<<<<<<
4858  * sys.exit(1)
4859  * k = dispersion(2*pi*f,depth)
4860  */
4861  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4862  __Pyx_GOTREF(__pyx_t_2);
4863  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4864  __Pyx_GOTREF(__pyx_t_3);
4865  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4866  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4867 
4868  /* "WaveTools.pyx":168
4869  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4870  * logEvent("Wavetools:py. Stopping simulation")
4871  * sys.exit(1) # <<<<<<<<<<<<<<
4872  * k = dispersion(2*pi*f,depth)
4873  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
4874  */
4875  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4876  __Pyx_GOTREF(__pyx_t_3);
4877  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4878  __Pyx_GOTREF(__pyx_t_2);
4879  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4880  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4881  __Pyx_GOTREF(__pyx_t_3);
4882  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4883  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
4884 
4885  /* "WaveTools.pyx":165
4886  * tma = 1.
4887  * if TMA:
4888  * if (depth == None): # <<<<<<<<<<<<<<
4889  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
4890  * logEvent("Wavetools:py. Stopping simulation")
4891  */
4892  }
4893 
4894  /* "WaveTools.pyx":169
4895  * logEvent("Wavetools:py. Stopping simulation")
4896  * sys.exit(1)
4897  * k = dispersion(2*pi*f,depth) # <<<<<<<<<<<<<<
4898  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
4899  *
4900  */
4901  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4902  __Pyx_GOTREF(__pyx_t_2);
4903  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4904  __Pyx_GOTREF(__pyx_t_4);
4905  __pyx_t_5 = PyNumber_Multiply(__pyx_int_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4906  __Pyx_GOTREF(__pyx_t_5);
4907  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
4908  __pyx_t_4 = PyNumber_Multiply(__pyx_t_5, __pyx_v_f); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4909  __Pyx_GOTREF(__pyx_t_4);
4910  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4911  __pyx_t_5 = NULL;
4912  __pyx_t_7 = 0;
4913  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4914  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_2);
4915  if (likely(__pyx_t_5)) {
4916  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4917  __Pyx_INCREF(__pyx_t_5);
4918  __Pyx_INCREF(function);
4919  __Pyx_DECREF_SET(__pyx_t_2, function);
4920  __pyx_t_7 = 1;
4921  }
4922  }
4923  __pyx_t_1 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4924  __Pyx_GOTREF(__pyx_t_1);
4925  if (__pyx_t_5) {
4926  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
4927  }
4928  __Pyx_GIVEREF(__pyx_t_4);
4929  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_7, __pyx_t_4);
4930  __Pyx_INCREF(__pyx_v_depth);
4931  __Pyx_GIVEREF(__pyx_v_depth);
4932  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_7, __pyx_v_depth);
4933  __pyx_t_4 = 0;
4934  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4935  __Pyx_GOTREF(__pyx_t_3);
4936  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4937  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4938  __pyx_v_k = __pyx_t_3;
4939  __pyx_t_3 = 0;
4940 
4941  /* "WaveTools.pyx":170
4942  * sys.exit(1)
4943  * k = dispersion(2*pi*f,depth)
4944  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth)) # <<<<<<<<<<<<<<
4945  *
4946  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
4947  */
4948  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4949  __Pyx_GOTREF(__pyx_t_2);
4950  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4951  __Pyx_GOTREF(__pyx_t_1);
4952  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4953  __pyx_t_2 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4954  __Pyx_GOTREF(__pyx_t_2);
4955  __pyx_t_4 = NULL;
4956  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
4957  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
4958  if (likely(__pyx_t_4)) {
4959  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
4960  __Pyx_INCREF(__pyx_t_4);
4961  __Pyx_INCREF(function);
4962  __Pyx_DECREF_SET(__pyx_t_1, function);
4963  }
4964  }
4965  if (!__pyx_t_4) {
4966  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4967  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
4968  __Pyx_GOTREF(__pyx_t_3);
4969  } else {
4970  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4971  __Pyx_GOTREF(__pyx_t_5);
4972  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
4973  __Pyx_GIVEREF(__pyx_t_2);
4974  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
4975  __pyx_t_2 = 0;
4976  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4977  __Pyx_GOTREF(__pyx_t_3);
4978  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4979  }
4980  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
4981  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4982  __Pyx_GOTREF(__pyx_t_5);
4983  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_tanh); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4984  __Pyx_GOTREF(__pyx_t_2);
4985  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
4986  __pyx_t_5 = PyNumber_Multiply(__pyx_v_k, __pyx_v_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
4987  __Pyx_GOTREF(__pyx_t_5);
4988  __pyx_t_4 = NULL;
4989  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
4990  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
4991  if (likely(__pyx_t_4)) {
4992  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
4993  __Pyx_INCREF(__pyx_t_4);
4994  __Pyx_INCREF(function);
4995  __Pyx_DECREF_SET(__pyx_t_2, function);
4996  }
4997  }
4998  if (!__pyx_t_4) {
4999  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5000  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5001  __Pyx_GOTREF(__pyx_t_1);
5002  } else {
5003  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5004  __Pyx_GOTREF(__pyx_t_8);
5005  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
5006  __Pyx_GIVEREF(__pyx_t_5);
5007  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
5008  __pyx_t_5 = 0;
5009  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5010  __Pyx_GOTREF(__pyx_t_1);
5011  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5012  }
5013  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5014  __pyx_t_2 = PyNumber_Multiply(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5015  __Pyx_GOTREF(__pyx_t_2);
5016  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5017  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5018  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5019  __Pyx_GOTREF(__pyx_t_1);
5020  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_v_depth); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5021  __Pyx_GOTREF(__pyx_t_3);
5022  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5023  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5024  __Pyx_GOTREF(__pyx_t_8);
5025  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_sinh); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5026  __Pyx_GOTREF(__pyx_t_5);
5027  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5028  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_v_k); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5029  __Pyx_GOTREF(__pyx_t_8);
5030  __pyx_t_4 = PyNumber_Multiply(__pyx_t_8, __pyx_v_depth); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5031  __Pyx_GOTREF(__pyx_t_4);
5032  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
5033  __pyx_t_8 = NULL;
5034  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
5035  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
5036  if (likely(__pyx_t_8)) {
5037  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
5038  __Pyx_INCREF(__pyx_t_8);
5039  __Pyx_INCREF(function);
5040  __Pyx_DECREF_SET(__pyx_t_5, function);
5041  }
5042  }
5043  if (!__pyx_t_8) {
5044  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5045  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5046  __Pyx_GOTREF(__pyx_t_1);
5047  } else {
5048  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5049  __Pyx_GOTREF(__pyx_t_6);
5050  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8); __pyx_t_8 = NULL;
5051  __Pyx_GIVEREF(__pyx_t_4);
5052  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_4);
5053  __pyx_t_4 = 0;
5054  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5055  __Pyx_GOTREF(__pyx_t_1);
5056  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5057  }
5058  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5059  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5060  __Pyx_GOTREF(__pyx_t_5);
5061  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5062  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5063  __pyx_t_1 = __Pyx_PyFloat_AddCObj(__pyx_float_1_, __pyx_t_5, 1., 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5064  __Pyx_GOTREF(__pyx_t_1);
5065  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5066  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5067  __Pyx_GOTREF(__pyx_t_5);
5068  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5069  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5070  __Pyx_DECREF_SET(__pyx_v_tma, __pyx_t_5);
5071  __pyx_t_5 = 0;
5072 
5073  /* "WaveTools.pyx":164
5074  * r = np.exp(-(Tp*f-1.)**2/(2.*sigma(f,f0)**2))
5075  * tma = 1.
5076  * if TMA: # <<<<<<<<<<<<<<
5077  * if (depth == None):
5078  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
5079  */
5080  }
5081 
5082  /* "WaveTools.pyx":172
5083  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
5084  *
5085  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r) # <<<<<<<<<<<<<<
5086  *
5087  * def PM_mod(f,f0,Hs):
5088  */
5089  __Pyx_XDECREF(__pyx_r);
5090  __pyx_t_5 = PyNumber_Multiply(__pyx_v_tma, __pyx_v_bj); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5091  __Pyx_GOTREF(__pyx_t_5);
5092  __pyx_t_1 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5093  __Pyx_GOTREF(__pyx_t_1);
5094  __pyx_t_2 = PyNumber_Multiply(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5095  __Pyx_GOTREF(__pyx_t_2);
5096  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5097  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5098  __pyx_t_1 = PyNumber_Power(__pyx_v_Tp, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5099  __Pyx_GOTREF(__pyx_t_1);
5100  __pyx_t_5 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5101  __Pyx_GOTREF(__pyx_t_5);
5102  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5103  __Pyx_GOTREF(__pyx_t_3);
5104  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5105  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5106  __pyx_t_5 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5107  __Pyx_GOTREF(__pyx_t_5);
5108  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5109  __pyx_t_3 = PyNumber_Multiply(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5110  __Pyx_GOTREF(__pyx_t_3);
5111  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5112  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5113  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5114  __Pyx_GOTREF(__pyx_t_2);
5115  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5116  __Pyx_GOTREF(__pyx_t_1);
5117  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5118  __pyx_t_2 = PyNumber_Multiply(__pyx_v_Tp, __pyx_v_f); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5119  __Pyx_GOTREF(__pyx_t_2);
5120  __pyx_t_6 = PyNumber_Power(__pyx_t_2, __pyx_float_4_, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5121  __Pyx_GOTREF(__pyx_t_6);
5122  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5123  __pyx_t_2 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_t_6, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5124  __Pyx_GOTREF(__pyx_t_2);
5125  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5126  __pyx_t_6 = PyNumber_Multiply(__pyx_float_neg_1_25, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5127  __Pyx_GOTREF(__pyx_t_6);
5128  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5129  __pyx_t_2 = NULL;
5130  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
5131  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
5132  if (likely(__pyx_t_2)) {
5133  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
5134  __Pyx_INCREF(__pyx_t_2);
5135  __Pyx_INCREF(function);
5136  __Pyx_DECREF_SET(__pyx_t_1, function);
5137  }
5138  }
5139  if (!__pyx_t_2) {
5140  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5141  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5142  __Pyx_GOTREF(__pyx_t_5);
5143  } else {
5144  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5145  __Pyx_GOTREF(__pyx_t_4);
5146  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
5147  __Pyx_GIVEREF(__pyx_t_6);
5148  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
5149  __pyx_t_6 = 0;
5150  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5151  __Pyx_GOTREF(__pyx_t_5);
5152  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5153  }
5154  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5155  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5156  __Pyx_GOTREF(__pyx_t_1);
5157  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5158  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5159  __pyx_t_5 = PyNumber_Power(__pyx_v_gamma, __pyx_v_r, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5160  __Pyx_GOTREF(__pyx_t_5);
5161  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5162  __Pyx_GOTREF(__pyx_t_3);
5163  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5164  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5165  __pyx_r = __pyx_t_3;
5166  __pyx_t_3 = 0;
5167  goto __pyx_L0;
5168 
5169  /* "WaveTools.pyx":150
5170  *
5171  *
5172  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
5173  * """The wave spectrum from Joint North Sea Wave Observation Project
5174  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
5175  */
5176 
5177  /* function exit code */
5178  __pyx_L1_error:;
5179  __Pyx_XDECREF(__pyx_t_1);
5180  __Pyx_XDECREF(__pyx_t_2);
5181  __Pyx_XDECREF(__pyx_t_3);
5182  __Pyx_XDECREF(__pyx_t_4);
5183  __Pyx_XDECREF(__pyx_t_5);
5184  __Pyx_XDECREF(__pyx_t_6);
5185  __Pyx_XDECREF(__pyx_t_8);
5186  __Pyx_AddTraceback("WaveTools.JONSWAP", __pyx_clineno, __pyx_lineno, __pyx_filename);
5187  __pyx_r = NULL;
5188  __pyx_L0:;
5189  __Pyx_XDECREF(__pyx_v_Tp);
5190  __Pyx_XDECREF(__pyx_v_bj);
5191  __Pyx_XDECREF(__pyx_v_r);
5192  __Pyx_XDECREF(__pyx_v_tma);
5193  __Pyx_XDECREF(__pyx_v_k);
5194  __Pyx_XGIVEREF(__pyx_r);
5195  __Pyx_RefNannyFinishContext();
5196  return __pyx_r;
5197 }
5198 
5199 /* "WaveTools.pyx":174
5200  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
5201  *
5202  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
5203  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
5204  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
5205  */
5206 
5207 /* Python wrapper */
5208 static PyObject *__pyx_pw_9WaveTools_25PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5209 static char __pyx_doc_9WaveTools_24PM_mod[] = "PM_mod(f, f0, Hs)\nmodified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)\n Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm\n And then to Tucker M J, 1991. Waves in Ocean Engineering. Ellis Horwood Ltd. (Chichester).\n :param f: frequency [1/T]\n :param f0: peak frequency [1/T]\n :param alpha: alpha fitting parameter [-]\n :param beta: beta fitting parameter [-]\n :param g: graivty [L/T^2]\n ";
5210 static PyMethodDef __pyx_mdef_9WaveTools_25PM_mod = {"PM_mod", (PyCFunction)__pyx_pw_9WaveTools_25PM_mod, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_24PM_mod};
5211 static PyObject *__pyx_pw_9WaveTools_25PM_mod(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5212  PyObject *__pyx_v_f = 0;
5213  PyObject *__pyx_v_f0 = 0;
5214  PyObject *__pyx_v_Hs = 0;
5215  int __pyx_lineno = 0;
5216  const char *__pyx_filename = NULL;
5217  int __pyx_clineno = 0;
5218  PyObject *__pyx_r = 0;
5219  __Pyx_RefNannyDeclarations
5220  __Pyx_RefNannySetupContext("PM_mod (wrapper)", 0);
5221  {
5222  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_f,&__pyx_n_s_f0,&__pyx_n_s_Hs,0};
5223  PyObject* values[3] = {0,0,0};
5224  if (unlikely(__pyx_kwds)) {
5225  Py_ssize_t kw_args;
5226  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5227  switch (pos_args) {
5228  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5229  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5230  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5231  case 0: break;
5232  default: goto __pyx_L5_argtuple_error;
5233  }
5234  kw_args = PyDict_Size(__pyx_kwds);
5235  switch (pos_args) {
5236  case 0:
5237  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
5238  else goto __pyx_L5_argtuple_error;
5239  case 1:
5240  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
5241  else {
5242  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5243  }
5244  case 2:
5245  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
5246  else {
5247  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5248  }
5249  }
5250  if (unlikely(kw_args > 0)) {
5251  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "PM_mod") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5252  }
5253  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
5254  goto __pyx_L5_argtuple_error;
5255  } else {
5256  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5257  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5258  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5259  }
5260  __pyx_v_f = values[0];
5261  __pyx_v_f0 = values[1];
5262  __pyx_v_Hs = values[2];
5263  }
5264  goto __pyx_L4_argument_unpacking_done;
5265  __pyx_L5_argtuple_error:;
5266  __Pyx_RaiseArgtupleInvalid("PM_mod", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5267  __pyx_L3_error:;
5268  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
5269  __Pyx_RefNannyFinishContext();
5270  return NULL;
5271  __pyx_L4_argument_unpacking_done:;
5272  __pyx_r = __pyx_pf_9WaveTools_24PM_mod(__pyx_self, __pyx_v_f, __pyx_v_f0, __pyx_v_Hs);
5273 
5274  /* function exit code */
5275  __Pyx_RefNannyFinishContext();
5276  return __pyx_r;
5277 }
5278 
5279 static PyObject *__pyx_pf_9WaveTools_24PM_mod(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_f, PyObject *__pyx_v_f0, PyObject *__pyx_v_Hs) {
5280  PyObject *__pyx_r = NULL;
5281  __Pyx_RefNannyDeclarations
5282  PyObject *__pyx_t_1 = NULL;
5283  PyObject *__pyx_t_2 = NULL;
5284  PyObject *__pyx_t_3 = NULL;
5285  PyObject *__pyx_t_4 = NULL;
5286  PyObject *__pyx_t_5 = NULL;
5287  PyObject *__pyx_t_6 = NULL;
5288  int __pyx_lineno = 0;
5289  const char *__pyx_filename = NULL;
5290  int __pyx_clineno = 0;
5291  __Pyx_RefNannySetupContext("PM_mod", 0);
5292 
5293  /* "WaveTools.pyx":184
5294  * :param g: graivty [L/T^2]
5295  * """
5296  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4) # <<<<<<<<<<<<<<
5297  *
5298  * def cos2s(theta,f,s=10):
5299  */
5300  __Pyx_XDECREF(__pyx_r);
5301  __pyx_t_1 = PyFloat_FromDouble((5.0 / 16.0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5302  __Pyx_GOTREF(__pyx_t_1);
5303  __pyx_t_2 = PyNumber_Power(__pyx_v_Hs, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5304  __Pyx_GOTREF(__pyx_t_2);
5305  __pyx_t_3 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5306  __Pyx_GOTREF(__pyx_t_3);
5307  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5308  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5309  __pyx_t_2 = PyNumber_Power(__pyx_v_f0, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5310  __Pyx_GOTREF(__pyx_t_2);
5311  __pyx_t_1 = PyNumber_Power(__pyx_v_f, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5312  __Pyx_GOTREF(__pyx_t_1);
5313  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5314  __Pyx_GOTREF(__pyx_t_4);
5315  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5316  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5317  __pyx_t_1 = PyNumber_Multiply(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5318  __Pyx_GOTREF(__pyx_t_1);
5319  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5320  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5321  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5322  __Pyx_GOTREF(__pyx_t_3);
5323  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5324  __Pyx_GOTREF(__pyx_t_2);
5325  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5326  __pyx_t_3 = PyFloat_FromDouble((-5.0 / 4.0)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5327  __Pyx_GOTREF(__pyx_t_3);
5328  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_f0, __pyx_v_f); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5329  __Pyx_GOTREF(__pyx_t_5);
5330  __pyx_t_6 = PyNumber_Power(__pyx_t_5, __pyx_int_4, Py_None); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5331  __Pyx_GOTREF(__pyx_t_6);
5332  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5333  __pyx_t_5 = PyNumber_Multiply(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5334  __Pyx_GOTREF(__pyx_t_5);
5335  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5336  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5337  __pyx_t_6 = NULL;
5338  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
5339  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
5340  if (likely(__pyx_t_6)) {
5341  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5342  __Pyx_INCREF(__pyx_t_6);
5343  __Pyx_INCREF(function);
5344  __Pyx_DECREF_SET(__pyx_t_2, function);
5345  }
5346  }
5347  if (!__pyx_t_6) {
5348  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5349  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5350  __Pyx_GOTREF(__pyx_t_4);
5351  } else {
5352  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5353  __Pyx_GOTREF(__pyx_t_3);
5354  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6); __pyx_t_6 = NULL;
5355  __Pyx_GIVEREF(__pyx_t_5);
5356  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
5357  __pyx_t_5 = 0;
5358  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5359  __Pyx_GOTREF(__pyx_t_4);
5360  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5361  }
5362  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5363  __pyx_t_2 = PyNumber_Multiply(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5364  __Pyx_GOTREF(__pyx_t_2);
5365  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5366  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5367  __pyx_r = __pyx_t_2;
5368  __pyx_t_2 = 0;
5369  goto __pyx_L0;
5370 
5371  /* "WaveTools.pyx":174
5372  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
5373  *
5374  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
5375  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
5376  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
5377  */
5378 
5379  /* function exit code */
5380  __pyx_L1_error:;
5381  __Pyx_XDECREF(__pyx_t_1);
5382  __Pyx_XDECREF(__pyx_t_2);
5383  __Pyx_XDECREF(__pyx_t_3);
5384  __Pyx_XDECREF(__pyx_t_4);
5385  __Pyx_XDECREF(__pyx_t_5);
5386  __Pyx_XDECREF(__pyx_t_6);
5387  __Pyx_AddTraceback("WaveTools.PM_mod", __pyx_clineno, __pyx_lineno, __pyx_filename);
5388  __pyx_r = NULL;
5389  __pyx_L0:;
5390  __Pyx_XGIVEREF(__pyx_r);
5391  __Pyx_RefNannyFinishContext();
5392  return __pyx_r;
5393 }
5394 
5395 /* "WaveTools.pyx":186
5396  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
5397  *
5398  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
5399  * """The cos2s wave directional Spread
5400  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
5401  */
5402 
5403 /* Python wrapper */
5404 static PyObject *__pyx_pw_9WaveTools_27cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5405 static char __pyx_doc_9WaveTools_26cos2s[] = "cos2s(theta, f, s=10)\nThe cos2s wave directional Spread \n see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf\n :param theta: ange of wave direction, with respect to the peak direction\n :param f: wave frequency [1/T] (not angular frequency). Dummy variable in this one\n :param s: directional peak parameter. as s ->oo the distribution converges to \n ";
5406 static PyMethodDef __pyx_mdef_9WaveTools_27cos2s = {"cos2s", (PyCFunction)__pyx_pw_9WaveTools_27cos2s, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_26cos2s};
5407 static PyObject *__pyx_pw_9WaveTools_27cos2s(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5408  PyObject *__pyx_v_theta = 0;
5409  PyObject *__pyx_v_f = 0;
5410  PyObject *__pyx_v_s = 0;
5411  int __pyx_lineno = 0;
5412  const char *__pyx_filename = NULL;
5413  int __pyx_clineno = 0;
5414  PyObject *__pyx_r = 0;
5415  __Pyx_RefNannyDeclarations
5416  __Pyx_RefNannySetupContext("cos2s (wrapper)", 0);
5417  {
5418  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_f,&__pyx_n_s_s,0};
5419  PyObject* values[3] = {0,0,0};
5420  values[2] = ((PyObject *)__pyx_int_10);
5421  if (unlikely(__pyx_kwds)) {
5422  Py_ssize_t kw_args;
5423  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5424  switch (pos_args) {
5425  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5426  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5427  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5428  case 0: break;
5429  default: goto __pyx_L5_argtuple_error;
5430  }
5431  kw_args = PyDict_Size(__pyx_kwds);
5432  switch (pos_args) {
5433  case 0:
5434  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
5435  else goto __pyx_L5_argtuple_error;
5436  case 1:
5437  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f)) != 0)) kw_args--;
5438  else {
5439  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5440  }
5441  case 2:
5442  if (kw_args > 0) {
5443  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_s);
5444  if (value) { values[2] = value; kw_args--; }
5445  }
5446  }
5447  if (unlikely(kw_args > 0)) {
5448  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cos2s") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5449  }
5450  } else {
5451  switch (PyTuple_GET_SIZE(__pyx_args)) {
5452  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5453  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5454  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5455  break;
5456  default: goto __pyx_L5_argtuple_error;
5457  }
5458  }
5459  __pyx_v_theta = values[0];
5460  __pyx_v_f = values[1];
5461  __pyx_v_s = values[2];
5462  }
5463  goto __pyx_L4_argument_unpacking_done;
5464  __pyx_L5_argtuple_error:;
5465  __Pyx_RaiseArgtupleInvalid("cos2s", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5466  __pyx_L3_error:;
5467  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
5468  __Pyx_RefNannyFinishContext();
5469  return NULL;
5470  __pyx_L4_argument_unpacking_done:;
5471  __pyx_r = __pyx_pf_9WaveTools_26cos2s(__pyx_self, __pyx_v_theta, __pyx_v_f, __pyx_v_s);
5472 
5473  /* function exit code */
5474  __Pyx_RefNannyFinishContext();
5475  return __pyx_r;
5476 }
5477 
5478 static PyObject *__pyx_pf_9WaveTools_26cos2s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_f, PyObject *__pyx_v_s) {
5479  PyObject *__pyx_v_fun = NULL;
5480  Py_ssize_t __pyx_v_ii;
5481  PyObject *__pyx_r = NULL;
5482  __Pyx_RefNannyDeclarations
5483  PyObject *__pyx_t_1 = NULL;
5484  PyObject *__pyx_t_2 = NULL;
5485  PyObject *__pyx_t_3 = NULL;
5486  Py_ssize_t __pyx_t_4;
5487  PyObject *__pyx_t_5 = NULL;
5488  PyObject *__pyx_t_6 = NULL;
5489  Py_ssize_t __pyx_t_7;
5490  int __pyx_lineno = 0;
5491  const char *__pyx_filename = NULL;
5492  int __pyx_clineno = 0;
5493  __Pyx_RefNannySetupContext("cos2s", 0);
5494 
5495  /* "WaveTools.pyx":193
5496  * :param s: directional peak parameter. as s ->oo the distribution converges to
5497  * """
5498  * fun = np.zeros((len(theta),len(f)),) # <<<<<<<<<<<<<<
5499  * for ii in range(len(fun[0,:])):
5500  * fun[:,ii] = np.cos(theta/2)**(2*s)
5501  */
5502  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5503  __Pyx_GOTREF(__pyx_t_2);
5504  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5505  __Pyx_GOTREF(__pyx_t_3);
5506  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5507  __pyx_t_4 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5508  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5509  __Pyx_GOTREF(__pyx_t_2);
5510  __pyx_t_4 = PyObject_Length(__pyx_v_f); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5511  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5512  __Pyx_GOTREF(__pyx_t_5);
5513  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5514  __Pyx_GOTREF(__pyx_t_6);
5515  __Pyx_GIVEREF(__pyx_t_2);
5516  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_2);
5517  __Pyx_GIVEREF(__pyx_t_5);
5518  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5);
5519  __pyx_t_2 = 0;
5520  __pyx_t_5 = 0;
5521  __pyx_t_5 = NULL;
5522  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
5523  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
5524  if (likely(__pyx_t_5)) {
5525  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5526  __Pyx_INCREF(__pyx_t_5);
5527  __Pyx_INCREF(function);
5528  __Pyx_DECREF_SET(__pyx_t_3, function);
5529  }
5530  }
5531  if (!__pyx_t_5) {
5532  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5533  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
5534  __Pyx_GOTREF(__pyx_t_1);
5535  } else {
5536  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5537  __Pyx_GOTREF(__pyx_t_2);
5538  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
5539  __Pyx_GIVEREF(__pyx_t_6);
5540  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_6);
5541  __pyx_t_6 = 0;
5542  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5543  __Pyx_GOTREF(__pyx_t_1);
5544  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5545  }
5546  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5547  __pyx_v_fun = __pyx_t_1;
5548  __pyx_t_1 = 0;
5549 
5550  /* "WaveTools.pyx":194
5551  * """
5552  * fun = np.zeros((len(theta),len(f)),)
5553  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
5554  * fun[:,ii] = np.cos(theta/2)**(2*s)
5555  * return fun
5556  */
5557  __pyx_t_1 = PyObject_GetItem(__pyx_v_fun, __pyx_tuple__32); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5558  __Pyx_GOTREF(__pyx_t_1);
5559  __pyx_t_4 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5560  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5561  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_4; __pyx_t_7+=1) {
5562  __pyx_v_ii = __pyx_t_7;
5563 
5564  /* "WaveTools.pyx":195
5565  * fun = np.zeros((len(theta),len(f)),)
5566  * for ii in range(len(fun[0,:])):
5567  * fun[:,ii] = np.cos(theta/2)**(2*s) # <<<<<<<<<<<<<<
5568  * return fun
5569  * def mitsuyasu(theta,fi,f0,smax=10):
5570  */
5571  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5572  __Pyx_GOTREF(__pyx_t_3);
5573  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_cos); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5574  __Pyx_GOTREF(__pyx_t_2);
5575  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5576  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_theta, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5577  __Pyx_GOTREF(__pyx_t_3);
5578  __pyx_t_6 = NULL;
5579  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
5580  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
5581  if (likely(__pyx_t_6)) {
5582  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
5583  __Pyx_INCREF(__pyx_t_6);
5584  __Pyx_INCREF(function);
5585  __Pyx_DECREF_SET(__pyx_t_2, function);
5586  }
5587  }
5588  if (!__pyx_t_6) {
5589  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5590  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5591  __Pyx_GOTREF(__pyx_t_1);
5592  } else {
5593  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5594  __Pyx_GOTREF(__pyx_t_5);
5595  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
5596  __Pyx_GIVEREF(__pyx_t_3);
5597  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
5598  __pyx_t_3 = 0;
5599  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5600  __Pyx_GOTREF(__pyx_t_1);
5601  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5602  }
5603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5604  __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_v_s); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5605  __Pyx_GOTREF(__pyx_t_2);
5606  __pyx_t_5 = PyNumber_Power(__pyx_t_1, __pyx_t_2, Py_None); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5607  __Pyx_GOTREF(__pyx_t_5);
5608  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5609  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5610  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5611  __Pyx_GOTREF(__pyx_t_2);
5612  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5613  __Pyx_GOTREF(__pyx_t_1);
5614  __Pyx_INCREF(__pyx_slice__33);
5615  __Pyx_GIVEREF(__pyx_slice__33);
5616  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_slice__33);
5617  __Pyx_GIVEREF(__pyx_t_2);
5618  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
5619  __pyx_t_2 = 0;
5620  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_1, __pyx_t_5) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5621  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5622  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5623  }
5624 
5625  /* "WaveTools.pyx":196
5626  * for ii in range(len(fun[0,:])):
5627  * fun[:,ii] = np.cos(theta/2)**(2*s)
5628  * return fun # <<<<<<<<<<<<<<
5629  * def mitsuyasu(theta,fi,f0,smax=10):
5630  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
5631  */
5632  __Pyx_XDECREF(__pyx_r);
5633  __Pyx_INCREF(__pyx_v_fun);
5634  __pyx_r = __pyx_v_fun;
5635  goto __pyx_L0;
5636 
5637  /* "WaveTools.pyx":186
5638  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
5639  *
5640  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
5641  * """The cos2s wave directional Spread
5642  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
5643  */
5644 
5645  /* function exit code */
5646  __pyx_L1_error:;
5647  __Pyx_XDECREF(__pyx_t_1);
5648  __Pyx_XDECREF(__pyx_t_2);
5649  __Pyx_XDECREF(__pyx_t_3);
5650  __Pyx_XDECREF(__pyx_t_5);
5651  __Pyx_XDECREF(__pyx_t_6);
5652  __Pyx_AddTraceback("WaveTools.cos2s", __pyx_clineno, __pyx_lineno, __pyx_filename);
5653  __pyx_r = NULL;
5654  __pyx_L0:;
5655  __Pyx_XDECREF(__pyx_v_fun);
5656  __Pyx_XGIVEREF(__pyx_r);
5657  __Pyx_RefNannyFinishContext();
5658  return __pyx_r;
5659 }
5660 
5661 /* "WaveTools.pyx":197
5662  * fun[:,ii] = np.cos(theta/2)**(2*s)
5663  * return fun
5664  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
5665  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
5666  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
5667  */
5668 
5669 /* Python wrapper */
5670 static PyObject *__pyx_pw_9WaveTools_29mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
5671 static char __pyx_doc_9WaveTools_28mitsuyasu[] = "mitsuyasu(theta, fi, f0, smax=10)\nThe cos2s wave directional spread with wave frequency dependency (mitsuyasu spread) \n Equation from \"Random Seas and Design of Maritime Structures\" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25\n :param theta: ange of wave direction, with respect to the peak direction\n :param f: wave frequency [1/T] (not angular frequency). Dummy variable in this one\n :param s: directional peak parameter. as s ->oo the distribution converges to \n ";
5672 static PyMethodDef __pyx_mdef_9WaveTools_29mitsuyasu = {"mitsuyasu", (PyCFunction)__pyx_pw_9WaveTools_29mitsuyasu, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_28mitsuyasu};
5673 static PyObject *__pyx_pw_9WaveTools_29mitsuyasu(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
5674  PyObject *__pyx_v_theta = 0;
5675  PyObject *__pyx_v_fi = 0;
5676  PyObject *__pyx_v_f0 = 0;
5677  PyObject *__pyx_v_smax = 0;
5678  int __pyx_lineno = 0;
5679  const char *__pyx_filename = NULL;
5680  int __pyx_clineno = 0;
5681  PyObject *__pyx_r = 0;
5682  __Pyx_RefNannyDeclarations
5683  __Pyx_RefNannySetupContext("mitsuyasu (wrapper)", 0);
5684  {
5685  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_theta,&__pyx_n_s_fi,&__pyx_n_s_f0,&__pyx_n_s_smax,0};
5686  PyObject* values[4] = {0,0,0,0};
5687  values[3] = ((PyObject *)__pyx_int_10);
5688  if (unlikely(__pyx_kwds)) {
5689  Py_ssize_t kw_args;
5690  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
5691  switch (pos_args) {
5692  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5693  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5694  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5695  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5696  case 0: break;
5697  default: goto __pyx_L5_argtuple_error;
5698  }
5699  kw_args = PyDict_Size(__pyx_kwds);
5700  switch (pos_args) {
5701  case 0:
5702  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_theta)) != 0)) kw_args--;
5703  else goto __pyx_L5_argtuple_error;
5704  case 1:
5705  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fi)) != 0)) kw_args--;
5706  else {
5707  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5708  }
5709  case 2:
5710  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_f0)) != 0)) kw_args--;
5711  else {
5712  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5713  }
5714  case 3:
5715  if (kw_args > 0) {
5716  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_smax);
5717  if (value) { values[3] = value; kw_args--; }
5718  }
5719  }
5720  if (unlikely(kw_args > 0)) {
5721  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mitsuyasu") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5722  }
5723  } else {
5724  switch (PyTuple_GET_SIZE(__pyx_args)) {
5725  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
5726  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
5727  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
5728  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
5729  break;
5730  default: goto __pyx_L5_argtuple_error;
5731  }
5732  }
5733  __pyx_v_theta = values[0];
5734  __pyx_v_fi = values[1];
5735  __pyx_v_f0 = values[2];
5736  __pyx_v_smax = values[3];
5737  }
5738  goto __pyx_L4_argument_unpacking_done;
5739  __pyx_L5_argtuple_error:;
5740  __Pyx_RaiseArgtupleInvalid("mitsuyasu", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
5741  __pyx_L3_error:;
5742  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
5743  __Pyx_RefNannyFinishContext();
5744  return NULL;
5745  __pyx_L4_argument_unpacking_done:;
5746  __pyx_r = __pyx_pf_9WaveTools_28mitsuyasu(__pyx_self, __pyx_v_theta, __pyx_v_fi, __pyx_v_f0, __pyx_v_smax);
5747 
5748  /* function exit code */
5749  __Pyx_RefNannyFinishContext();
5750  return __pyx_r;
5751 }
5752 
5753 static PyObject *__pyx_pf_9WaveTools_28mitsuyasu(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_theta, PyObject *__pyx_v_fi, PyObject *__pyx_v_f0, PyObject *__pyx_v_smax) {
5754  PyObject *__pyx_v_s = NULL;
5755  PyObject *__pyx_v_ii = NULL;
5756  PyObject *__pyx_v_fun = NULL;
5757  PyObject *__pyx_r = NULL;
5758  __Pyx_RefNannyDeclarations
5759  PyObject *__pyx_t_1 = NULL;
5760  PyObject *__pyx_t_2 = NULL;
5761  PyObject *__pyx_t_3 = NULL;
5762  PyObject *__pyx_t_4 = NULL;
5763  PyObject *__pyx_t_5 = NULL;
5764  Py_ssize_t __pyx_t_6;
5765  PyObject *(*__pyx_t_7)(PyObject *);
5766  PyObject *__pyx_t_8 = NULL;
5767  int __pyx_lineno = 0;
5768  const char *__pyx_filename = NULL;
5769  int __pyx_clineno = 0;
5770  __Pyx_RefNannySetupContext("mitsuyasu", 0);
5771 
5772  /* "WaveTools.pyx":205
5773  * """
5774  *
5775  * s = smax * (fi/f0)**(5) # <<<<<<<<<<<<<<
5776  * ii = np.where(fi>f0)[0][0]
5777  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5778  */
5779  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_fi, __pyx_v_f0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5780  __Pyx_GOTREF(__pyx_t_1);
5781  __pyx_t_2 = PyNumber_Power(__pyx_t_1, __pyx_int_5, Py_None); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5782  __Pyx_GOTREF(__pyx_t_2);
5783  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5784  __pyx_t_1 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5785  __Pyx_GOTREF(__pyx_t_1);
5786  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5787  __pyx_v_s = __pyx_t_1;
5788  __pyx_t_1 = 0;
5789 
5790  /* "WaveTools.pyx":206
5791  *
5792  * s = smax * (fi/f0)**(5)
5793  * ii = np.where(fi>f0)[0][0] # <<<<<<<<<<<<<<
5794  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5795  * fun = np.zeros((len(theta),len(fi)),)
5796  */
5797  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5798  __Pyx_GOTREF(__pyx_t_2);
5799  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5800  __Pyx_GOTREF(__pyx_t_3);
5801  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5802  __pyx_t_2 = PyObject_RichCompare(__pyx_v_fi, __pyx_v_f0, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5803  __pyx_t_4 = NULL;
5804  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
5805  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
5806  if (likely(__pyx_t_4)) {
5807  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
5808  __Pyx_INCREF(__pyx_t_4);
5809  __Pyx_INCREF(function);
5810  __Pyx_DECREF_SET(__pyx_t_3, function);
5811  }
5812  }
5813  if (!__pyx_t_4) {
5814  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5815  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
5816  __Pyx_GOTREF(__pyx_t_1);
5817  } else {
5818  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5819  __Pyx_GOTREF(__pyx_t_5);
5820  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
5821  __Pyx_GIVEREF(__pyx_t_2);
5822  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_2);
5823  __pyx_t_2 = 0;
5824  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5825  __Pyx_GOTREF(__pyx_t_1);
5826  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5827  }
5828  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5829  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5830  __Pyx_GOTREF(__pyx_t_3);
5831  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5832  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5833  __Pyx_GOTREF(__pyx_t_1);
5834  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5835  __pyx_v_ii = __pyx_t_1;
5836  __pyx_t_1 = 0;
5837 
5838  /* "WaveTools.pyx":207
5839  * s = smax * (fi/f0)**(5)
5840  * ii = np.where(fi>f0)[0][0]
5841  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5) # <<<<<<<<<<<<<<
5842  * fun = np.zeros((len(theta),len(fi)),)
5843  * for ii in range(len(fun[0,:])):
5844  */
5845  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_v_fi, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5846  __Pyx_GOTREF(__pyx_t_1);
5847  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_f0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5848  __Pyx_GOTREF(__pyx_t_3);
5849  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5850  __pyx_t_1 = PyNumber_Power(__pyx_t_3, __pyx_float_neg_2_5, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5851  __Pyx_GOTREF(__pyx_t_1);
5852  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5853  __pyx_t_3 = PyNumber_Multiply(__pyx_v_smax, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5854  __Pyx_GOTREF(__pyx_t_3);
5855  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5856  if (__Pyx_PyObject_SetSlice(__pyx_v_s, __pyx_t_3, 0, 0, &__pyx_v_ii, NULL, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5857  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5858 
5859  /* "WaveTools.pyx":208
5860  * ii = np.where(fi>f0)[0][0]
5861  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5862  * fun = np.zeros((len(theta),len(fi)),) # <<<<<<<<<<<<<<
5863  * for ii in range(len(fun[0,:])):
5864  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
5865  */
5866  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5867  __Pyx_GOTREF(__pyx_t_1);
5868  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5869  __Pyx_GOTREF(__pyx_t_5);
5870  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5871  __pyx_t_6 = PyObject_Length(__pyx_v_theta); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5872  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5873  __Pyx_GOTREF(__pyx_t_1);
5874  __pyx_t_6 = PyObject_Length(__pyx_v_fi); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5875  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5876  __Pyx_GOTREF(__pyx_t_2);
5877  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5878  __Pyx_GOTREF(__pyx_t_4);
5879  __Pyx_GIVEREF(__pyx_t_1);
5880  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
5881  __Pyx_GIVEREF(__pyx_t_2);
5882  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_2);
5883  __pyx_t_1 = 0;
5884  __pyx_t_2 = 0;
5885  __pyx_t_2 = NULL;
5886  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
5887  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
5888  if (likely(__pyx_t_2)) {
5889  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
5890  __Pyx_INCREF(__pyx_t_2);
5891  __Pyx_INCREF(function);
5892  __Pyx_DECREF_SET(__pyx_t_5, function);
5893  }
5894  }
5895  if (!__pyx_t_2) {
5896  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5897  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
5898  __Pyx_GOTREF(__pyx_t_3);
5899  } else {
5900  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5901  __Pyx_GOTREF(__pyx_t_1);
5902  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
5903  __Pyx_GIVEREF(__pyx_t_4);
5904  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_4);
5905  __pyx_t_4 = 0;
5906  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5907  __Pyx_GOTREF(__pyx_t_3);
5908  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5909  }
5910  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5911  __pyx_v_fun = __pyx_t_3;
5912  __pyx_t_3 = 0;
5913 
5914  /* "WaveTools.pyx":209
5915  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
5916  * fun = np.zeros((len(theta),len(fi)),)
5917  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
5918  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
5919  * return fun
5920  */
5921  __pyx_t_3 = PyObject_GetItem(__pyx_v_fun, __pyx_tuple__35); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
5922  __Pyx_GOTREF(__pyx_t_3);
5923  __pyx_t_6 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5924  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5925  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5926  __Pyx_GOTREF(__pyx_t_3);
5927  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5928  __Pyx_GOTREF(__pyx_t_5);
5929  __Pyx_GIVEREF(__pyx_t_3);
5930  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
5931  __pyx_t_3 = 0;
5932  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5933  __Pyx_GOTREF(__pyx_t_3);
5934  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
5935  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
5936  __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
5937  __pyx_t_7 = NULL;
5938  } else {
5939  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5940  __Pyx_GOTREF(__pyx_t_5);
5941  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5942  }
5943  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
5944  for (;;) {
5945  if (likely(!__pyx_t_7)) {
5946  if (likely(PyList_CheckExact(__pyx_t_5))) {
5947  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
5948  #if CYTHON_COMPILING_IN_CPYTHON
5949  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5950  #else
5951  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5952  __Pyx_GOTREF(__pyx_t_3);
5953  #endif
5954  } else {
5955  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
5956  #if CYTHON_COMPILING_IN_CPYTHON
5957  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_3); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5958  #else
5959  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5960  __Pyx_GOTREF(__pyx_t_3);
5961  #endif
5962  }
5963  } else {
5964  __pyx_t_3 = __pyx_t_7(__pyx_t_5);
5965  if (unlikely(!__pyx_t_3)) {
5966  PyObject* exc_type = PyErr_Occurred();
5967  if (exc_type) {
5968  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
5969  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5970  }
5971  break;
5972  }
5973  __Pyx_GOTREF(__pyx_t_3);
5974  }
5975  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_3);
5976  __pyx_t_3 = 0;
5977 
5978  /* "WaveTools.pyx":210
5979  * fun = np.zeros((len(theta),len(fi)),)
5980  * for ii in range(len(fun[0,:])):
5981  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii]) # <<<<<<<<<<<<<<
5982  * return fun
5983  *
5984  */
5985  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5986  __Pyx_GOTREF(__pyx_t_1);
5987  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5988  __Pyx_GOTREF(__pyx_t_4);
5989  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
5990  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_v_theta, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
5991  __Pyx_GOTREF(__pyx_t_1);
5992  __pyx_t_2 = NULL;
5993  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
5994  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
5995  if (likely(__pyx_t_2)) {
5996  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
5997  __Pyx_INCREF(__pyx_t_2);
5998  __Pyx_INCREF(function);
5999  __Pyx_DECREF_SET(__pyx_t_4, function);
6000  }
6001  }
6002  if (!__pyx_t_2) {
6003  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6004  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6005  __Pyx_GOTREF(__pyx_t_3);
6006  } else {
6007  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6008  __Pyx_GOTREF(__pyx_t_8);
6009  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2); __pyx_t_2 = NULL;
6010  __Pyx_GIVEREF(__pyx_t_1);
6011  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_1);
6012  __pyx_t_1 = 0;
6013  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6014  __Pyx_GOTREF(__pyx_t_3);
6015  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6016  }
6017  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6018  __pyx_t_4 = PyObject_GetItem(__pyx_v_s, __pyx_v_ii); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
6019  __Pyx_GOTREF(__pyx_t_4);
6020  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6021  __Pyx_GOTREF(__pyx_t_8);
6022  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6023  __pyx_t_4 = PyNumber_Power(__pyx_t_3, __pyx_t_8, Py_None); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6024  __Pyx_GOTREF(__pyx_t_4);
6025  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6026  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6027  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6028  __Pyx_GOTREF(__pyx_t_8);
6029  __Pyx_INCREF(__pyx_slice__36);
6030  __Pyx_GIVEREF(__pyx_slice__36);
6031  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__36);
6032  __Pyx_INCREF(__pyx_v_ii);
6033  __Pyx_GIVEREF(__pyx_v_ii);
6034  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
6035  if (unlikely(PyObject_SetItem(__pyx_v_fun, __pyx_t_8, __pyx_t_4) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6036  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
6037  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6038 
6039  /* "WaveTools.pyx":209
6040  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
6041  * fun = np.zeros((len(theta),len(fi)),)
6042  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
6043  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
6044  * return fun
6045  */
6046  }
6047  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
6048 
6049  /* "WaveTools.pyx":211
6050  * for ii in range(len(fun[0,:])):
6051  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
6052  * return fun # <<<<<<<<<<<<<<
6053  *
6054  *
6055  */
6056  __Pyx_XDECREF(__pyx_r);
6057  __Pyx_INCREF(__pyx_v_fun);
6058  __pyx_r = __pyx_v_fun;
6059  goto __pyx_L0;
6060 
6061  /* "WaveTools.pyx":197
6062  * fun[:,ii] = np.cos(theta/2)**(2*s)
6063  * return fun
6064  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
6065  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
6066  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
6067  */
6068 
6069  /* function exit code */
6070  __pyx_L1_error:;
6071  __Pyx_XDECREF(__pyx_t_1);
6072  __Pyx_XDECREF(__pyx_t_2);
6073  __Pyx_XDECREF(__pyx_t_3);
6074  __Pyx_XDECREF(__pyx_t_4);
6075  __Pyx_XDECREF(__pyx_t_5);
6076  __Pyx_XDECREF(__pyx_t_8);
6077  __Pyx_AddTraceback("WaveTools.mitsuyasu", __pyx_clineno, __pyx_lineno, __pyx_filename);
6078  __pyx_r = NULL;
6079  __pyx_L0:;
6080  __Pyx_XDECREF(__pyx_v_s);
6081  __Pyx_XDECREF(__pyx_v_ii);
6082  __Pyx_XDECREF(__pyx_v_fun);
6083  __Pyx_XGIVEREF(__pyx_r);
6084  __Pyx_RefNannyFinishContext();
6085  return __pyx_r;
6086 }
6087 
6088 /* "WaveTools.pyx":217
6089  *
6090  *
6091  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
6092  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
6093  *
6094  */
6095 
6096 /* Python wrapper */
6097 static PyObject *__pyx_pw_9WaveTools_31dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6098 static char __pyx_doc_9WaveTools_30dispersion[] = "dispersion(w, d, g=9.81, niter=1000)\nCalculates wave number magnitude as a scallar or an arry of modes linear dispersion relation\n\n :param w: cyclical frequency (can be scalar or an aray of frequency modes)\n :param d: depth [L]\n :param niter: number of solution iterations\n :param g: gravity [L/T^2\n ";
6099 static PyMethodDef __pyx_mdef_9WaveTools_31dispersion = {"dispersion", (PyCFunction)__pyx_pw_9WaveTools_31dispersion, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_30dispersion};
6100 static PyObject *__pyx_pw_9WaveTools_31dispersion(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6101  PyObject *__pyx_v_w = 0;
6102  PyObject *__pyx_v_d = 0;
6103  PyObject *__pyx_v_g = 0;
6104  PyObject *__pyx_v_niter = 0;
6105  int __pyx_lineno = 0;
6106  const char *__pyx_filename = NULL;
6107  int __pyx_clineno = 0;
6108  PyObject *__pyx_r = 0;
6109  __Pyx_RefNannyDeclarations
6110  __Pyx_RefNannySetupContext("dispersion (wrapper)", 0);
6111  {
6112  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_w,&__pyx_n_s_d,&__pyx_n_s_g,&__pyx_n_s_niter,0};
6113  PyObject* values[4] = {0,0,0,0};
6114  values[2] = ((PyObject *)__pyx_float_9_81);
6115  values[3] = ((PyObject *)__pyx_int_1000);
6116  if (unlikely(__pyx_kwds)) {
6117  Py_ssize_t kw_args;
6118  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6119  switch (pos_args) {
6120  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6121  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6122  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6123  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6124  case 0: break;
6125  default: goto __pyx_L5_argtuple_error;
6126  }
6127  kw_args = PyDict_Size(__pyx_kwds);
6128  switch (pos_args) {
6129  case 0:
6130  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--;
6131  else goto __pyx_L5_argtuple_error;
6132  case 1:
6133  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_d)) != 0)) kw_args--;
6134  else {
6135  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6136  }
6137  case 2:
6138  if (kw_args > 0) {
6139  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g);
6140  if (value) { values[2] = value; kw_args--; }
6141  }
6142  case 3:
6143  if (kw_args > 0) {
6144  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_niter);
6145  if (value) { values[3] = value; kw_args--; }
6146  }
6147  }
6148  if (unlikely(kw_args > 0)) {
6149  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dispersion") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6150  }
6151  } else {
6152  switch (PyTuple_GET_SIZE(__pyx_args)) {
6153  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
6154  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
6155  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6156  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6157  break;
6158  default: goto __pyx_L5_argtuple_error;
6159  }
6160  }
6161  __pyx_v_w = values[0];
6162  __pyx_v_d = values[1];
6163  __pyx_v_g = values[2];
6164  __pyx_v_niter = values[3];
6165  }
6166  goto __pyx_L4_argument_unpacking_done;
6167  __pyx_L5_argtuple_error:;
6168  __Pyx_RaiseArgtupleInvalid("dispersion", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6169  __pyx_L3_error:;
6170  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
6171  __Pyx_RefNannyFinishContext();
6172  return NULL;
6173  __pyx_L4_argument_unpacking_done:;
6174  __pyx_r = __pyx_pf_9WaveTools_30dispersion(__pyx_self, __pyx_v_w, __pyx_v_d, __pyx_v_g, __pyx_v_niter);
6175 
6176  /* function exit code */
6177  __Pyx_RefNannyFinishContext();
6178  return __pyx_r;
6179 }
6180 
6181 static PyObject *__pyx_pf_9WaveTools_30dispersion(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_w, PyObject *__pyx_v_d, PyObject *__pyx_v_g, PyObject *__pyx_v_niter) {
6182  PyObject *__pyx_v_w_aux = NULL;
6183  PyObject *__pyx_v_K = NULL;
6184  CYTHON_UNUSED PyObject *__pyx_v_jj = NULL;
6185  PyObject *__pyx_r = NULL;
6186  __Pyx_RefNannyDeclarations
6187  PyObject *__pyx_t_1 = NULL;
6188  PyObject *__pyx_t_2 = NULL;
6189  PyObject *__pyx_t_3 = NULL;
6190  PyObject *__pyx_t_4 = NULL;
6191  Py_ssize_t __pyx_t_5;
6192  PyObject *(*__pyx_t_6)(PyObject *);
6193  PyObject *__pyx_t_7 = NULL;
6194  PyObject *__pyx_t_8 = NULL;
6195  PyObject *__pyx_t_9 = NULL;
6196  int __pyx_t_10;
6197  int __pyx_t_11;
6198  int __pyx_lineno = 0;
6199  const char *__pyx_filename = NULL;
6200  int __pyx_clineno = 0;
6201  __Pyx_RefNannySetupContext("dispersion", 0);
6202 
6203  /* "WaveTools.pyx":226
6204  * """
6205  * # print("Initiating dispersion")
6206  * w_aux = np.array(w) # <<<<<<<<<<<<<<
6207  * K = w_aux**2/g
6208  * # print("Initial dispersion value = %s" %str(Kd/d))
6209  */
6210  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6211  __Pyx_GOTREF(__pyx_t_2);
6212  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6213  __Pyx_GOTREF(__pyx_t_3);
6214  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6215  __pyx_t_2 = NULL;
6216  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6217  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
6218  if (likely(__pyx_t_2)) {
6219  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6220  __Pyx_INCREF(__pyx_t_2);
6221  __Pyx_INCREF(function);
6222  __Pyx_DECREF_SET(__pyx_t_3, function);
6223  }
6224  }
6225  if (!__pyx_t_2) {
6226  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_w); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6227  __Pyx_GOTREF(__pyx_t_1);
6228  } else {
6229  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6230  __Pyx_GOTREF(__pyx_t_4);
6231  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
6232  __Pyx_INCREF(__pyx_v_w);
6233  __Pyx_GIVEREF(__pyx_v_w);
6234  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_w);
6235  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6236  __Pyx_GOTREF(__pyx_t_1);
6237  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6238  }
6239  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6240  __pyx_v_w_aux = __pyx_t_1;
6241  __pyx_t_1 = 0;
6242 
6243  /* "WaveTools.pyx":227
6244  * # print("Initiating dispersion")
6245  * w_aux = np.array(w)
6246  * K = w_aux**2/g # <<<<<<<<<<<<<<
6247  * # print("Initial dispersion value = %s" %str(Kd/d))
6248  * for jj in range(niter):
6249  */
6250  __pyx_t_1 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6251  __Pyx_GOTREF(__pyx_t_1);
6252  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6253  __Pyx_GOTREF(__pyx_t_3);
6254  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6255  __pyx_v_K = __pyx_t_3;
6256  __pyx_t_3 = 0;
6257 
6258  /* "WaveTools.pyx":229
6259  * K = w_aux**2/g
6260  * # print("Initial dispersion value = %s" %str(Kd/d))
6261  * for jj in range(niter): # <<<<<<<<<<<<<<
6262  * #Kdn_1 = Kd
6263  * K = w_aux**2/(g*np.tanh(K*d))
6264  */
6265  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6266  __Pyx_GOTREF(__pyx_t_3);
6267  __Pyx_INCREF(__pyx_v_niter);
6268  __Pyx_GIVEREF(__pyx_v_niter);
6269  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_niter);
6270  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6271  __Pyx_GOTREF(__pyx_t_1);
6272  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6273  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
6274  __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
6275  __pyx_t_6 = NULL;
6276  } else {
6277  __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6278  __Pyx_GOTREF(__pyx_t_3);
6279  __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6280  }
6281  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6282  for (;;) {
6283  if (likely(!__pyx_t_6)) {
6284  if (likely(PyList_CheckExact(__pyx_t_3))) {
6285  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
6286  #if CYTHON_COMPILING_IN_CPYTHON
6287  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6288  #else
6289  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6290  __Pyx_GOTREF(__pyx_t_1);
6291  #endif
6292  } else {
6293  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
6294  #if CYTHON_COMPILING_IN_CPYTHON
6295  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6296  #else
6297  __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6298  __Pyx_GOTREF(__pyx_t_1);
6299  #endif
6300  }
6301  } else {
6302  __pyx_t_1 = __pyx_t_6(__pyx_t_3);
6303  if (unlikely(!__pyx_t_1)) {
6304  PyObject* exc_type = PyErr_Occurred();
6305  if (exc_type) {
6306  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
6307  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6308  }
6309  break;
6310  }
6311  __Pyx_GOTREF(__pyx_t_1);
6312  }
6313  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
6314  __pyx_t_1 = 0;
6315 
6316  /* "WaveTools.pyx":231
6317  * for jj in range(niter):
6318  * #Kdn_1 = Kd
6319  * K = w_aux**2/(g*np.tanh(K*d)) # <<<<<<<<<<<<<<
6320  * #Kdn_1 /=0.01*Kd
6321  * #Kdn_1 -= 100.
6322  */
6323  __pyx_t_1 = PyNumber_Power(__pyx_v_w_aux, __pyx_int_2, Py_None); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6324  __Pyx_GOTREF(__pyx_t_1);
6325  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6326  __Pyx_GOTREF(__pyx_t_2);
6327  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6328  __Pyx_GOTREF(__pyx_t_7);
6329  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6330  __pyx_t_2 = PyNumber_Multiply(__pyx_v_K, __pyx_v_d); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6331  __Pyx_GOTREF(__pyx_t_2);
6332  __pyx_t_8 = NULL;
6333  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
6334  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
6335  if (likely(__pyx_t_8)) {
6336  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
6337  __Pyx_INCREF(__pyx_t_8);
6338  __Pyx_INCREF(function);
6339  __Pyx_DECREF_SET(__pyx_t_7, function);
6340  }
6341  }
6342  if (!__pyx_t_8) {
6343  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6344  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6345  __Pyx_GOTREF(__pyx_t_4);
6346  } else {
6347  __pyx_t_9 = PyTuple_New(1+1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6348  __Pyx_GOTREF(__pyx_t_9);
6349  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_8); __pyx_t_8 = NULL;
6350  __Pyx_GIVEREF(__pyx_t_2);
6351  PyTuple_SET_ITEM(__pyx_t_9, 0+1, __pyx_t_2);
6352  __pyx_t_2 = 0;
6353  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6354  __Pyx_GOTREF(__pyx_t_4);
6355  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6356  }
6357  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6358  __pyx_t_7 = PyNumber_Multiply(__pyx_v_g, __pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6359  __Pyx_GOTREF(__pyx_t_7);
6360  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6361  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6362  __Pyx_GOTREF(__pyx_t_4);
6363  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6364  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
6365  __Pyx_DECREF_SET(__pyx_v_K, __pyx_t_4);
6366  __pyx_t_4 = 0;
6367 
6368  /* "WaveTools.pyx":229
6369  * K = w_aux**2/g
6370  * # print("Initial dispersion value = %s" %str(Kd/d))
6371  * for jj in range(niter): # <<<<<<<<<<<<<<
6372  * #Kdn_1 = Kd
6373  * K = w_aux**2/(g*np.tanh(K*d))
6374  */
6375  }
6376  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6377 
6378  /* "WaveTools.pyx":240
6379  * # print("Final k value = %s" %str(Kd/d))
6380  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6381  * if type(K) is float: # <<<<<<<<<<<<<<
6382  * return K[0]
6383  * else:
6384  */
6385  __pyx_t_10 = (((PyObject *)Py_TYPE(__pyx_v_K)) == ((PyObject *)(&PyFloat_Type)));
6386  __pyx_t_11 = (__pyx_t_10 != 0);
6387  if (__pyx_t_11) {
6388 
6389  /* "WaveTools.pyx":241
6390  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6391  * if type(K) is float:
6392  * return K[0] # <<<<<<<<<<<<<<
6393  * else:
6394  * return K
6395  */
6396  __Pyx_XDECREF(__pyx_r);
6397  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_K, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
6398  __Pyx_GOTREF(__pyx_t_3);
6399  __pyx_r = __pyx_t_3;
6400  __pyx_t_3 = 0;
6401  goto __pyx_L0;
6402 
6403  /* "WaveTools.pyx":240
6404  * # print("Final k value = %s" %str(Kd/d))
6405  * # print("Wavelength= %s" %str(2.*pi*d/Kd))
6406  * if type(K) is float: # <<<<<<<<<<<<<<
6407  * return K[0]
6408  * else:
6409  */
6410  }
6411 
6412  /* "WaveTools.pyx":243
6413  * return K[0]
6414  * else:
6415  * return K # <<<<<<<<<<<<<<
6416  *
6417  *
6418  */
6419  /*else*/ {
6420  __Pyx_XDECREF(__pyx_r);
6421  __Pyx_INCREF(__pyx_v_K);
6422  __pyx_r = __pyx_v_K;
6423  goto __pyx_L0;
6424  }
6425 
6426  /* "WaveTools.pyx":217
6427  *
6428  *
6429  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
6430  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
6431  *
6432  */
6433 
6434  /* function exit code */
6435  __pyx_L1_error:;
6436  __Pyx_XDECREF(__pyx_t_1);
6437  __Pyx_XDECREF(__pyx_t_2);
6438  __Pyx_XDECREF(__pyx_t_3);
6439  __Pyx_XDECREF(__pyx_t_4);
6440  __Pyx_XDECREF(__pyx_t_7);
6441  __Pyx_XDECREF(__pyx_t_8);
6442  __Pyx_XDECREF(__pyx_t_9);
6443  __Pyx_AddTraceback("WaveTools.dispersion", __pyx_clineno, __pyx_lineno, __pyx_filename);
6444  __pyx_r = NULL;
6445  __pyx_L0:;
6446  __Pyx_XDECREF(__pyx_v_w_aux);
6447  __Pyx_XDECREF(__pyx_v_K);
6448  __Pyx_XDECREF(__pyx_v_jj);
6449  __Pyx_XGIVEREF(__pyx_r);
6450  __Pyx_RefNannyFinishContext();
6451  return __pyx_r;
6452 }
6453 
6454 /* "WaveTools.pyx":246
6455  *
6456  *
6457  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
6458  * """ returns a top hat filter
6459  * :param l: array length
6460  */
6461 
6462 /* Python wrapper */
6463 static PyObject *__pyx_pw_9WaveTools_33tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6464 static char __pyx_doc_9WaveTools_32tophat[] = "tophat(l, cutoff)\n returns a top hat filter \n :param l: array length\n :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements\n\n ";
6465 static PyMethodDef __pyx_mdef_9WaveTools_33tophat = {"tophat", (PyCFunction)__pyx_pw_9WaveTools_33tophat, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_32tophat};
6466 static PyObject *__pyx_pw_9WaveTools_33tophat(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6467  PyObject *__pyx_v_l = 0;
6468  PyObject *__pyx_v_cutoff = 0;
6469  int __pyx_lineno = 0;
6470  const char *__pyx_filename = NULL;
6471  int __pyx_clineno = 0;
6472  PyObject *__pyx_r = 0;
6473  __Pyx_RefNannyDeclarations
6474  __Pyx_RefNannySetupContext("tophat (wrapper)", 0);
6475  {
6476  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
6477  PyObject* values[2] = {0,0};
6478  if (unlikely(__pyx_kwds)) {
6479  Py_ssize_t kw_args;
6480  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6481  switch (pos_args) {
6482  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6483  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6484  case 0: break;
6485  default: goto __pyx_L5_argtuple_error;
6486  }
6487  kw_args = PyDict_Size(__pyx_kwds);
6488  switch (pos_args) {
6489  case 0:
6490  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
6491  else goto __pyx_L5_argtuple_error;
6492  case 1:
6493  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoff)) != 0)) kw_args--;
6494  else {
6495  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6496  }
6497  }
6498  if (unlikely(kw_args > 0)) {
6499  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tophat") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6500  }
6501  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
6502  goto __pyx_L5_argtuple_error;
6503  } else {
6504  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6505  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6506  }
6507  __pyx_v_l = values[0];
6508  __pyx_v_cutoff = values[1];
6509  }
6510  goto __pyx_L4_argument_unpacking_done;
6511  __pyx_L5_argtuple_error:;
6512  __Pyx_RaiseArgtupleInvalid("tophat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6513  __pyx_L3_error:;
6514  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
6515  __Pyx_RefNannyFinishContext();
6516  return NULL;
6517  __pyx_L4_argument_unpacking_done:;
6518  __pyx_r = __pyx_pf_9WaveTools_32tophat(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
6519 
6520  /* function exit code */
6521  __Pyx_RefNannyFinishContext();
6522  return __pyx_r;
6523 }
6524 
6525 static PyObject *__pyx_pf_9WaveTools_32tophat(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
6526  PyObject *__pyx_v_a = NULL;
6527  PyObject *__pyx_v_cut = NULL;
6528  PyObject *__pyx_r = NULL;
6529  __Pyx_RefNannyDeclarations
6530  PyObject *__pyx_t_1 = NULL;
6531  PyObject *__pyx_t_2 = NULL;
6532  PyObject *__pyx_t_3 = NULL;
6533  PyObject *__pyx_t_4 = NULL;
6534  int __pyx_lineno = 0;
6535  const char *__pyx_filename = NULL;
6536  int __pyx_clineno = 0;
6537  __Pyx_RefNannySetupContext("tophat", 0);
6538 
6539  /* "WaveTools.pyx":252
6540  *
6541  * """
6542  * a = np.zeros(l,) # <<<<<<<<<<<<<<
6543  * cut = int(cutoff*l)
6544  * a[cut:-cut] = 1.
6545  */
6546  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6547  __Pyx_GOTREF(__pyx_t_2);
6548  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6549  __Pyx_GOTREF(__pyx_t_3);
6550  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6551  __pyx_t_2 = NULL;
6552  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6553  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
6554  if (likely(__pyx_t_2)) {
6555  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6556  __Pyx_INCREF(__pyx_t_2);
6557  __Pyx_INCREF(function);
6558  __Pyx_DECREF_SET(__pyx_t_3, function);
6559  }
6560  }
6561  if (!__pyx_t_2) {
6562  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6563  __Pyx_GOTREF(__pyx_t_1);
6564  } else {
6565  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6566  __Pyx_GOTREF(__pyx_t_4);
6567  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
6568  __Pyx_INCREF(__pyx_v_l);
6569  __Pyx_GIVEREF(__pyx_v_l);
6570  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_l);
6571  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6572  __Pyx_GOTREF(__pyx_t_1);
6573  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6574  }
6575  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6576  __pyx_v_a = __pyx_t_1;
6577  __pyx_t_1 = 0;
6578 
6579  /* "WaveTools.pyx":253
6580  * """
6581  * a = np.zeros(l,)
6582  * cut = int(cutoff*l) # <<<<<<<<<<<<<<
6583  * a[cut:-cut] = 1.
6584  * return a
6585  */
6586  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6587  __Pyx_GOTREF(__pyx_t_1);
6588  __pyx_t_3 = PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6589  __Pyx_GOTREF(__pyx_t_3);
6590  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6591  __pyx_v_cut = __pyx_t_3;
6592  __pyx_t_3 = 0;
6593 
6594  /* "WaveTools.pyx":254
6595  * a = np.zeros(l,)
6596  * cut = int(cutoff*l)
6597  * a[cut:-cut] = 1. # <<<<<<<<<<<<<<
6598  * return a
6599  *
6600  */
6601  __pyx_t_3 = PyNumber_Negative(__pyx_v_cut); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6602  __Pyx_GOTREF(__pyx_t_3);
6603  if (__Pyx_PyObject_SetSlice(__pyx_v_a, __pyx_float_1_, 0, 0, &__pyx_v_cut, &__pyx_t_3, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6604  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6605 
6606  /* "WaveTools.pyx":255
6607  * cut = int(cutoff*l)
6608  * a[cut:-cut] = 1.
6609  * return a # <<<<<<<<<<<<<<
6610  *
6611  * def costap(l,cutoff=0.1):
6612  */
6613  __Pyx_XDECREF(__pyx_r);
6614  __Pyx_INCREF(__pyx_v_a);
6615  __pyx_r = __pyx_v_a;
6616  goto __pyx_L0;
6617 
6618  /* "WaveTools.pyx":246
6619  *
6620  *
6621  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
6622  * """ returns a top hat filter
6623  * :param l: array length
6624  */
6625 
6626  /* function exit code */
6627  __pyx_L1_error:;
6628  __Pyx_XDECREF(__pyx_t_1);
6629  __Pyx_XDECREF(__pyx_t_2);
6630  __Pyx_XDECREF(__pyx_t_3);
6631  __Pyx_XDECREF(__pyx_t_4);
6632  __Pyx_AddTraceback("WaveTools.tophat", __pyx_clineno, __pyx_lineno, __pyx_filename);
6633  __pyx_r = NULL;
6634  __pyx_L0:;
6635  __Pyx_XDECREF(__pyx_v_a);
6636  __Pyx_XDECREF(__pyx_v_cut);
6637  __Pyx_XGIVEREF(__pyx_r);
6638  __Pyx_RefNannyFinishContext();
6639  return __pyx_r;
6640 }
6641 
6642 /* "WaveTools.pyx":257
6643  * return a
6644  *
6645  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
6646  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
6647  * :param l: array length
6648  */
6649 
6650 /* Python wrapper */
6651 static PyObject *__pyx_pw_9WaveTools_35costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
6652 static char __pyx_doc_9WaveTools_34costap[] = "costap(l, cutoff=0.1)\n Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40 \n :param l: array length\n :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements";
6653 static PyMethodDef __pyx_mdef_9WaveTools_35costap = {"costap", (PyCFunction)__pyx_pw_9WaveTools_35costap, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_34costap};
6654 static PyObject *__pyx_pw_9WaveTools_35costap(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
6655  PyObject *__pyx_v_l = 0;
6656  PyObject *__pyx_v_cutoff = 0;
6657  int __pyx_lineno = 0;
6658  const char *__pyx_filename = NULL;
6659  int __pyx_clineno = 0;
6660  PyObject *__pyx_r = 0;
6661  __Pyx_RefNannyDeclarations
6662  __Pyx_RefNannySetupContext("costap (wrapper)", 0);
6663  {
6664  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_l,&__pyx_n_s_cutoff,0};
6665  PyObject* values[2] = {0,0};
6666  values[1] = ((PyObject *)__pyx_float_0_1);
6667  if (unlikely(__pyx_kwds)) {
6668  Py_ssize_t kw_args;
6669  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
6670  switch (pos_args) {
6671  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6672  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6673  case 0: break;
6674  default: goto __pyx_L5_argtuple_error;
6675  }
6676  kw_args = PyDict_Size(__pyx_kwds);
6677  switch (pos_args) {
6678  case 0:
6679  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_l)) != 0)) kw_args--;
6680  else goto __pyx_L5_argtuple_error;
6681  case 1:
6682  if (kw_args > 0) {
6683  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cutoff);
6684  if (value) { values[1] = value; kw_args--; }
6685  }
6686  }
6687  if (unlikely(kw_args > 0)) {
6688  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "costap") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6689  }
6690  } else {
6691  switch (PyTuple_GET_SIZE(__pyx_args)) {
6692  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
6693  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
6694  break;
6695  default: goto __pyx_L5_argtuple_error;
6696  }
6697  }
6698  __pyx_v_l = values[0];
6699  __pyx_v_cutoff = values[1];
6700  }
6701  goto __pyx_L4_argument_unpacking_done;
6702  __pyx_L5_argtuple_error:;
6703  __Pyx_RaiseArgtupleInvalid("costap", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
6704  __pyx_L3_error:;
6705  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
6706  __Pyx_RefNannyFinishContext();
6707  return NULL;
6708  __pyx_L4_argument_unpacking_done:;
6709  __pyx_r = __pyx_pf_9WaveTools_34costap(__pyx_self, __pyx_v_l, __pyx_v_cutoff);
6710 
6711  /* function exit code */
6712  __Pyx_RefNannyFinishContext();
6713  return __pyx_r;
6714 }
6715 
6716 static PyObject *__pyx_pf_9WaveTools_34costap(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_l, PyObject *__pyx_v_cutoff) {
6717  PyObject *__pyx_v_npoints = NULL;
6718  PyObject *__pyx_v_wind = NULL;
6719  PyObject *__pyx_v_k = NULL;
6720  PyObject *__pyx_r = NULL;
6721  __Pyx_RefNannyDeclarations
6722  PyObject *__pyx_t_1 = NULL;
6723  PyObject *__pyx_t_2 = NULL;
6724  PyObject *__pyx_t_3 = NULL;
6725  PyObject *__pyx_t_4 = NULL;
6726  Py_ssize_t __pyx_t_5;
6727  PyObject *(*__pyx_t_6)(PyObject *);
6728  int __pyx_t_7;
6729  double __pyx_t_8;
6730  PyObject *__pyx_t_9 = NULL;
6731  PyObject *__pyx_t_10 = NULL;
6732  int __pyx_lineno = 0;
6733  const char *__pyx_filename = NULL;
6734  int __pyx_clineno = 0;
6735  __Pyx_RefNannySetupContext("costap", 0);
6736 
6737  /* "WaveTools.pyx":261
6738  * :param l: array length
6739  * :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements"""
6740  * npoints = int(cutoff*l) # <<<<<<<<<<<<<<
6741  * wind = np.ones(l)
6742  * for k in range(l): # (k,np) = (n,N) normally used
6743  */
6744  __pyx_t_1 = PyNumber_Multiply(__pyx_v_cutoff, __pyx_v_l); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6745  __Pyx_GOTREF(__pyx_t_1);
6746  __pyx_t_2 = PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6747  __Pyx_GOTREF(__pyx_t_2);
6748  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6749  __pyx_v_npoints = __pyx_t_2;
6750  __pyx_t_2 = 0;
6751 
6752  /* "WaveTools.pyx":262
6753  * :param cutoff: cut off fraction at either side of the array zero values will be imposed at the first and last cutoff*l array elements"""
6754  * npoints = int(cutoff*l)
6755  * wind = np.ones(l) # <<<<<<<<<<<<<<
6756  * for k in range(l): # (k,np) = (n,N) normally used
6757  * if k < npoints:
6758  */
6759  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6760  __Pyx_GOTREF(__pyx_t_1);
6761  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6762  __Pyx_GOTREF(__pyx_t_3);
6763  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6764  __pyx_t_1 = NULL;
6765  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
6766  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
6767  if (likely(__pyx_t_1)) {
6768  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
6769  __Pyx_INCREF(__pyx_t_1);
6770  __Pyx_INCREF(function);
6771  __Pyx_DECREF_SET(__pyx_t_3, function);
6772  }
6773  }
6774  if (!__pyx_t_1) {
6775  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_l); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6776  __Pyx_GOTREF(__pyx_t_2);
6777  } else {
6778  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6779  __Pyx_GOTREF(__pyx_t_4);
6780  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1); __pyx_t_1 = NULL;
6781  __Pyx_INCREF(__pyx_v_l);
6782  __Pyx_GIVEREF(__pyx_v_l);
6783  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_l);
6784  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6785  __Pyx_GOTREF(__pyx_t_2);
6786  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6787  }
6788  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6789  __pyx_v_wind = __pyx_t_2;
6790  __pyx_t_2 = 0;
6791 
6792  /* "WaveTools.pyx":263
6793  * npoints = int(cutoff*l)
6794  * wind = np.ones(l)
6795  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
6796  * if k < npoints:
6797  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6798  */
6799  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6800  __Pyx_GOTREF(__pyx_t_2);
6801  __Pyx_INCREF(__pyx_v_l);
6802  __Pyx_GIVEREF(__pyx_v_l);
6803  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_l);
6804  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6805  __Pyx_GOTREF(__pyx_t_3);
6806  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
6807  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
6808  __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
6809  __pyx_t_6 = NULL;
6810  } else {
6811  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6812  __Pyx_GOTREF(__pyx_t_2);
6813  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6814  }
6815  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6816  for (;;) {
6817  if (likely(!__pyx_t_6)) {
6818  if (likely(PyList_CheckExact(__pyx_t_2))) {
6819  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
6820  #if CYTHON_COMPILING_IN_CPYTHON
6821  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6822  #else
6823  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6824  __Pyx_GOTREF(__pyx_t_3);
6825  #endif
6826  } else {
6827  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
6828  #if CYTHON_COMPILING_IN_CPYTHON
6829  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6830  #else
6831  __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6832  __Pyx_GOTREF(__pyx_t_3);
6833  #endif
6834  }
6835  } else {
6836  __pyx_t_3 = __pyx_t_6(__pyx_t_2);
6837  if (unlikely(!__pyx_t_3)) {
6838  PyObject* exc_type = PyErr_Occurred();
6839  if (exc_type) {
6840  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
6841  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6842  }
6843  break;
6844  }
6845  __Pyx_GOTREF(__pyx_t_3);
6846  }
6847  __Pyx_XDECREF_SET(__pyx_v_k, __pyx_t_3);
6848  __pyx_t_3 = 0;
6849 
6850  /* "WaveTools.pyx":264
6851  * wind = np.ones(l)
6852  * for k in range(l): # (k,np) = (n,N) normally used
6853  * if k < npoints: # <<<<<<<<<<<<<<
6854  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6855  * if k > l - npoints -1:
6856  */
6857  __pyx_t_3 = PyObject_RichCompare(__pyx_v_k, __pyx_v_npoints, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6858  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6859  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6860  if (__pyx_t_7) {
6861 
6862  /* "WaveTools.pyx":265
6863  * for k in range(l): # (k,np) = (n,N) normally used
6864  * if k < npoints:
6865  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints))) # <<<<<<<<<<<<<<
6866  * if k > l - npoints -1:
6867  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
6868  */
6869  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6870  __Pyx_GOTREF(__pyx_t_4);
6871  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6872  __Pyx_GOTREF(__pyx_t_1);
6873  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_k); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6874  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6875  __Pyx_GOTREF(__pyx_t_9);
6876  __pyx_t_10 = PyNumber_Multiply(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6877  __Pyx_GOTREF(__pyx_t_10);
6878  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6879  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6880  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6881  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6882  __Pyx_GOTREF(__pyx_t_9);
6883  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6884  __Pyx_GOTREF(__pyx_t_1);
6885  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6886  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6887  __pyx_t_9 = NULL;
6888  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
6889  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
6890  if (likely(__pyx_t_9)) {
6891  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6892  __Pyx_INCREF(__pyx_t_9);
6893  __Pyx_INCREF(function);
6894  __Pyx_DECREF_SET(__pyx_t_4, function);
6895  }
6896  }
6897  if (!__pyx_t_9) {
6898  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6899  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6900  __Pyx_GOTREF(__pyx_t_3);
6901  } else {
6902  __pyx_t_10 = PyTuple_New(1+1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6903  __Pyx_GOTREF(__pyx_t_10);
6904  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_9); __pyx_t_9 = NULL;
6905  __Pyx_GIVEREF(__pyx_t_1);
6906  PyTuple_SET_ITEM(__pyx_t_10, 0+1, __pyx_t_1);
6907  __pyx_t_1 = 0;
6908  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_10, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6909  __Pyx_GOTREF(__pyx_t_3);
6910  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6911  }
6912  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6913  __pyx_t_4 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6914  __Pyx_GOTREF(__pyx_t_4);
6915  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6916  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6917  __Pyx_GOTREF(__pyx_t_3);
6918  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6919  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6920  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6921 
6922  /* "WaveTools.pyx":264
6923  * wind = np.ones(l)
6924  * for k in range(l): # (k,np) = (n,N) normally used
6925  * if k < npoints: # <<<<<<<<<<<<<<
6926  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6927  * if k > l - npoints -1:
6928  */
6929  }
6930 
6931  /* "WaveTools.pyx":266
6932  * if k < npoints:
6933  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6934  * if k > l - npoints -1: # <<<<<<<<<<<<<<
6935  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
6936  * return wind
6937  */
6938  __pyx_t_3 = PyNumber_Subtract(__pyx_v_l, __pyx_v_npoints); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6939  __Pyx_GOTREF(__pyx_t_3);
6940  __pyx_t_4 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6941  __Pyx_GOTREF(__pyx_t_4);
6942  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6943  __pyx_t_3 = PyObject_RichCompare(__pyx_v_k, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6944  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
6945  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_7 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6946  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
6947  if (__pyx_t_7) {
6948 
6949  /* "WaveTools.pyx":267
6950  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
6951  * if k > l - npoints -1:
6952  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints))) # <<<<<<<<<<<<<<
6953  * return wind
6954  *
6955  */
6956  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6957  __Pyx_GOTREF(__pyx_t_4);
6958  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6959  __Pyx_GOTREF(__pyx_t_10);
6960  __pyx_t_1 = PyNumber_Subtract(__pyx_v_l, __pyx_v_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6961  __Pyx_GOTREF(__pyx_t_1);
6962  __pyx_t_9 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6963  __Pyx_GOTREF(__pyx_t_9);
6964  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6965  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_t_9); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6966  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6967  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6968  __Pyx_GOTREF(__pyx_t_9);
6969  __pyx_t_1 = PyNumber_Multiply(__pyx_t_10, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6970  __Pyx_GOTREF(__pyx_t_1);
6971  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6972  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6973  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_v_npoints); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6974  __pyx_t_9 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6975  __Pyx_GOTREF(__pyx_t_9);
6976  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6977  __Pyx_GOTREF(__pyx_t_10);
6978  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
6979  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
6980  __pyx_t_9 = NULL;
6981  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
6982  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
6983  if (likely(__pyx_t_9)) {
6984  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
6985  __Pyx_INCREF(__pyx_t_9);
6986  __Pyx_INCREF(function);
6987  __Pyx_DECREF_SET(__pyx_t_4, function);
6988  }
6989  }
6990  if (!__pyx_t_9) {
6991  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_10); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6992  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
6993  __Pyx_GOTREF(__pyx_t_3);
6994  } else {
6995  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
6996  __Pyx_GOTREF(__pyx_t_1);
6997  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_9); __pyx_t_9 = NULL;
6998  __Pyx_GIVEREF(__pyx_t_10);
6999  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_10);
7000  __pyx_t_10 = 0;
7001  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7002  __Pyx_GOTREF(__pyx_t_3);
7003  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7004  }
7005  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7006  __pyx_t_4 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7007  __Pyx_GOTREF(__pyx_t_4);
7008  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7009  __pyx_t_3 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7010  __Pyx_GOTREF(__pyx_t_3);
7011  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7012  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_v_k, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7013  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7014 
7015  /* "WaveTools.pyx":266
7016  * if k < npoints:
7017  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
7018  * if k > l - npoints -1: # <<<<<<<<<<<<<<
7019  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
7020  * return wind
7021  */
7022  }
7023 
7024  /* "WaveTools.pyx":263
7025  * npoints = int(cutoff*l)
7026  * wind = np.ones(l)
7027  * for k in range(l): # (k,np) = (n,N) normally used # <<<<<<<<<<<<<<
7028  * if k < npoints:
7029  * wind[k] = 0.5*(1.-cos(pi*float(k)/float(npoints)))
7030  */
7031  }
7032  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7033 
7034  /* "WaveTools.pyx":268
7035  * if k > l - npoints -1:
7036  * wind[k] = 0.5*(1.-cos(pi*float(l-k-1)/float(npoints)))
7037  * return wind # <<<<<<<<<<<<<<
7038  *
7039  * def decompose_tseries(time,eta,dt):
7040  */
7041  __Pyx_XDECREF(__pyx_r);
7042  __Pyx_INCREF(__pyx_v_wind);
7043  __pyx_r = __pyx_v_wind;
7044  goto __pyx_L0;
7045 
7046  /* "WaveTools.pyx":257
7047  * return a
7048  *
7049  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
7050  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
7051  * :param l: array length
7052  */
7053 
7054  /* function exit code */
7055  __pyx_L1_error:;
7056  __Pyx_XDECREF(__pyx_t_1);
7057  __Pyx_XDECREF(__pyx_t_2);
7058  __Pyx_XDECREF(__pyx_t_3);
7059  __Pyx_XDECREF(__pyx_t_4);
7060  __Pyx_XDECREF(__pyx_t_9);
7061  __Pyx_XDECREF(__pyx_t_10);
7062  __Pyx_AddTraceback("WaveTools.costap", __pyx_clineno, __pyx_lineno, __pyx_filename);
7063  __pyx_r = NULL;
7064  __pyx_L0:;
7065  __Pyx_XDECREF(__pyx_v_npoints);
7066  __Pyx_XDECREF(__pyx_v_wind);
7067  __Pyx_XDECREF(__pyx_v_k);
7068  __Pyx_XGIVEREF(__pyx_r);
7069  __Pyx_RefNannyFinishContext();
7070  return __pyx_r;
7071 }
7072 
7073 /* "WaveTools.pyx":270
7074  * return wind
7075  *
7076  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
7077  * """ This function does a spectral decomposition of a time series with constant sampling.
7078  * It returns a list with results with four entries:
7079  */
7080 
7081 /* Python wrapper */
7082 static PyObject *__pyx_pw_9WaveTools_37decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7083 static char __pyx_doc_9WaveTools_36decompose_tseries[] = "decompose_tseries(time, eta, dt)\n This function does a spectral decomposition of a time series with constant sampling.\n It returns a list with results with four entries:\n 0 -> numpy array with frequency components ww\n 1 -> numpy array with amplitude of each component aa\n 2 -> numpy array with phase of each component pp\n 3 -> float of the 0th fourier mode (wave setup) \n :param time: time array [T]\n :param eta: signal array\n :param dt: sampling frequency [1/T] \n ";
7084 static PyMethodDef __pyx_mdef_9WaveTools_37decompose_tseries = {"decompose_tseries", (PyCFunction)__pyx_pw_9WaveTools_37decompose_tseries, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_36decompose_tseries};
7085 static PyObject *__pyx_pw_9WaveTools_37decompose_tseries(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7086  PyObject *__pyx_v_time = 0;
7087  PyObject *__pyx_v_eta = 0;
7088  PyObject *__pyx_v_dt = 0;
7089  int __pyx_lineno = 0;
7090  const char *__pyx_filename = NULL;
7091  int __pyx_clineno = 0;
7092  PyObject *__pyx_r = 0;
7093  __Pyx_RefNannyDeclarations
7094  __Pyx_RefNannySetupContext("decompose_tseries (wrapper)", 0);
7095  {
7096  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_time,&__pyx_n_s_eta,&__pyx_n_s_dt,0};
7097  PyObject* values[3] = {0,0,0};
7098  if (unlikely(__pyx_kwds)) {
7099  Py_ssize_t kw_args;
7100  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7101  switch (pos_args) {
7102  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7103  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7104  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7105  case 0: break;
7106  default: goto __pyx_L5_argtuple_error;
7107  }
7108  kw_args = PyDict_Size(__pyx_kwds);
7109  switch (pos_args) {
7110  case 0:
7111  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_time)) != 0)) kw_args--;
7112  else goto __pyx_L5_argtuple_error;
7113  case 1:
7114  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eta)) != 0)) kw_args--;
7115  else {
7116  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7117  }
7118  case 2:
7119  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dt)) != 0)) kw_args--;
7120  else {
7121  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7122  }
7123  }
7124  if (unlikely(kw_args > 0)) {
7125  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "decompose_tseries") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7126  }
7127  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
7128  goto __pyx_L5_argtuple_error;
7129  } else {
7130  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7131  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7132  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7133  }
7134  __pyx_v_time = values[0];
7135  __pyx_v_eta = values[1];
7136  __pyx_v_dt = values[2];
7137  }
7138  goto __pyx_L4_argument_unpacking_done;
7139  __pyx_L5_argtuple_error:;
7140  __Pyx_RaiseArgtupleInvalid("decompose_tseries", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7141  __pyx_L3_error:;
7142  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
7143  __Pyx_RefNannyFinishContext();
7144  return NULL;
7145  __pyx_L4_argument_unpacking_done:;
7146  __pyx_r = __pyx_pf_9WaveTools_36decompose_tseries(__pyx_self, __pyx_v_time, __pyx_v_eta, __pyx_v_dt);
7147 
7148  /* function exit code */
7149  __Pyx_RefNannyFinishContext();
7150  return __pyx_r;
7151 }
7152 
7153 static PyObject *__pyx_pf_9WaveTools_36decompose_tseries(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_time, PyObject *__pyx_v_eta, PyObject *__pyx_v_dt) {
7154  PyObject *__pyx_v_nfft = NULL;
7155  PyObject *__pyx_v_results = NULL;
7156  PyObject *__pyx_v_fft_x = NULL;
7157  PyObject *__pyx_v_freq = NULL;
7158  PyObject *__pyx_v_iend = NULL;
7159  PyObject *__pyx_v_setup = NULL;
7160  PyObject *__pyx_v_aa = NULL;
7161  PyObject *__pyx_v_ww = NULL;
7162  PyObject *__pyx_v_pp = NULL;
7163  Py_ssize_t __pyx_v_k;
7164  PyObject *__pyx_r = NULL;
7165  __Pyx_RefNannyDeclarations
7166  Py_ssize_t __pyx_t_1;
7167  PyObject *__pyx_t_2 = NULL;
7168  PyObject *__pyx_t_3 = NULL;
7169  PyObject *__pyx_t_4 = NULL;
7170  PyObject *__pyx_t_5 = NULL;
7171  PyObject *__pyx_t_6 = NULL;
7172  Py_ssize_t __pyx_t_7;
7173  int __pyx_t_8;
7174  int __pyx_lineno = 0;
7175  const char *__pyx_filename = NULL;
7176  int __pyx_clineno = 0;
7177  __Pyx_RefNannySetupContext("decompose_tseries", 0);
7178 
7179  /* "WaveTools.pyx":281
7180  * :param dt: sampling frequency [1/T]
7181  * """
7182  * nfft = len(time) # <<<<<<<<<<<<<<
7183  * results = []
7184  * fft_x = np.fft.fft(eta,nfft)
7185  */
7186  __pyx_t_1 = PyObject_Length(__pyx_v_time); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7187  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 281; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7188  __Pyx_GOTREF(__pyx_t_2);
7189  __pyx_v_nfft = __pyx_t_2;
7190  __pyx_t_2 = 0;
7191 
7192  /* "WaveTools.pyx":282
7193  * """
7194  * nfft = len(time)
7195  * results = [] # <<<<<<<<<<<<<<
7196  * fft_x = np.fft.fft(eta,nfft)
7197  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7198  */
7199  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7200  __Pyx_GOTREF(__pyx_t_2);
7201  __pyx_v_results = ((PyObject*)__pyx_t_2);
7202  __pyx_t_2 = 0;
7203 
7204  /* "WaveTools.pyx":283
7205  * nfft = len(time)
7206  * results = []
7207  * fft_x = np.fft.fft(eta,nfft) # <<<<<<<<<<<<<<
7208  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7209  * iend = np.where(freq<0)[0][0]
7210  */
7211  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7212  __Pyx_GOTREF(__pyx_t_3);
7213  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7214  __Pyx_GOTREF(__pyx_t_4);
7215  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7216  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_fft); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7217  __Pyx_GOTREF(__pyx_t_3);
7218  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7219  __pyx_t_4 = NULL;
7220  __pyx_t_1 = 0;
7221  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
7222  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
7223  if (likely(__pyx_t_4)) {
7224  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7225  __Pyx_INCREF(__pyx_t_4);
7226  __Pyx_INCREF(function);
7227  __Pyx_DECREF_SET(__pyx_t_3, function);
7228  __pyx_t_1 = 1;
7229  }
7230  }
7231  __pyx_t_5 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7232  __Pyx_GOTREF(__pyx_t_5);
7233  if (__pyx_t_4) {
7234  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
7235  }
7236  __Pyx_INCREF(__pyx_v_eta);
7237  __Pyx_GIVEREF(__pyx_v_eta);
7238  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_1, __pyx_v_eta);
7239  __Pyx_INCREF(__pyx_v_nfft);
7240  __Pyx_GIVEREF(__pyx_v_nfft);
7241  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_1, __pyx_v_nfft);
7242  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 283; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7243  __Pyx_GOTREF(__pyx_t_2);
7244  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7245  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7246  __pyx_v_fft_x = __pyx_t_2;
7247  __pyx_t_2 = 0;
7248 
7249  /* "WaveTools.pyx":284
7250  * results = []
7251  * fft_x = np.fft.fft(eta,nfft)
7252  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum # <<<<<<<<<<<<<<
7253  * iend = np.where(freq<0)[0][0]
7254  * setup = np.real(fft_x[0])/nfft
7255  */
7256  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7257  __Pyx_GOTREF(__pyx_t_3);
7258  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_fft); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7259  __Pyx_GOTREF(__pyx_t_5);
7260  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7261  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_fftfreq); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7262  __Pyx_GOTREF(__pyx_t_3);
7263  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7264  __pyx_t_5 = NULL;
7265  __pyx_t_1 = 0;
7266  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_3))) {
7267  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
7268  if (likely(__pyx_t_5)) {
7269  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7270  __Pyx_INCREF(__pyx_t_5);
7271  __Pyx_INCREF(function);
7272  __Pyx_DECREF_SET(__pyx_t_3, function);
7273  __pyx_t_1 = 1;
7274  }
7275  }
7276  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7277  __Pyx_GOTREF(__pyx_t_4);
7278  if (__pyx_t_5) {
7279  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
7280  }
7281  __Pyx_INCREF(__pyx_v_nfft);
7282  __Pyx_GIVEREF(__pyx_v_nfft);
7283  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_v_nfft);
7284  __Pyx_INCREF(__pyx_v_dt);
7285  __Pyx_GIVEREF(__pyx_v_dt);
7286  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_v_dt);
7287  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7288  __Pyx_GOTREF(__pyx_t_2);
7289  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7290  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7291  __pyx_v_freq = __pyx_t_2;
7292  __pyx_t_2 = 0;
7293 
7294  /* "WaveTools.pyx":285
7295  * fft_x = np.fft.fft(eta,nfft)
7296  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7297  * iend = np.where(freq<0)[0][0] # <<<<<<<<<<<<<<
7298  * setup = np.real(fft_x[0])/nfft
7299  * fft_x = fft_x[1:iend]
7300  */
7301  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7302  __Pyx_GOTREF(__pyx_t_3);
7303  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7304  __Pyx_GOTREF(__pyx_t_4);
7305  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7306  __pyx_t_3 = PyObject_RichCompare(__pyx_v_freq, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7307  __pyx_t_5 = NULL;
7308  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
7309  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
7310  if (likely(__pyx_t_5)) {
7311  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
7312  __Pyx_INCREF(__pyx_t_5);
7313  __Pyx_INCREF(function);
7314  __Pyx_DECREF_SET(__pyx_t_4, function);
7315  }
7316  }
7317  if (!__pyx_t_5) {
7318  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7319  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7320  __Pyx_GOTREF(__pyx_t_2);
7321  } else {
7322  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7323  __Pyx_GOTREF(__pyx_t_6);
7324  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5); __pyx_t_5 = NULL;
7325  __Pyx_GIVEREF(__pyx_t_3);
7326  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_3);
7327  __pyx_t_3 = 0;
7328  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7329  __Pyx_GOTREF(__pyx_t_2);
7330  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7331  }
7332  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7333  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7334  __Pyx_GOTREF(__pyx_t_4);
7335  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7336  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 285; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7337  __Pyx_GOTREF(__pyx_t_2);
7338  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7339  __pyx_v_iend = __pyx_t_2;
7340  __pyx_t_2 = 0;
7341 
7342  /* "WaveTools.pyx":286
7343  * freq = np.fft.fftfreq(nfft,dt) #%complex spectrum
7344  * iend = np.where(freq<0)[0][0]
7345  * setup = np.real(fft_x[0])/nfft # <<<<<<<<<<<<<<
7346  * fft_x = fft_x[1:iend]
7347  * freq = freq[1:iend]
7348  */
7349  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7350  __Pyx_GOTREF(__pyx_t_4);
7351  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_real); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7352  __Pyx_GOTREF(__pyx_t_6);
7353  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7354  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_fft_x, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7355  __Pyx_GOTREF(__pyx_t_4);
7356  __pyx_t_3 = NULL;
7357  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
7358  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
7359  if (likely(__pyx_t_3)) {
7360  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
7361  __Pyx_INCREF(__pyx_t_3);
7362  __Pyx_INCREF(function);
7363  __Pyx_DECREF_SET(__pyx_t_6, function);
7364  }
7365  }
7366  if (!__pyx_t_3) {
7367  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7368  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7369  __Pyx_GOTREF(__pyx_t_2);
7370  } else {
7371  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7372  __Pyx_GOTREF(__pyx_t_5);
7373  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7374  __Pyx_GIVEREF(__pyx_t_4);
7375  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_4);
7376  __pyx_t_4 = 0;
7377  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7378  __Pyx_GOTREF(__pyx_t_2);
7379  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7380  }
7381  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7382  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_nfft); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7383  __Pyx_GOTREF(__pyx_t_6);
7384  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7385  __pyx_v_setup = __pyx_t_6;
7386  __pyx_t_6 = 0;
7387 
7388  /* "WaveTools.pyx":287
7389  * iend = np.where(freq<0)[0][0]
7390  * setup = np.real(fft_x[0])/nfft
7391  * fft_x = fft_x[1:iend] # <<<<<<<<<<<<<<
7392  * freq = freq[1:iend]
7393  * #%retaining only first half of the spectrum
7394  */
7395  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_fft_x, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7396  __Pyx_GOTREF(__pyx_t_6);
7397  __Pyx_DECREF_SET(__pyx_v_fft_x, __pyx_t_6);
7398  __pyx_t_6 = 0;
7399 
7400  /* "WaveTools.pyx":288
7401  * setup = np.real(fft_x[0])/nfft
7402  * fft_x = fft_x[1:iend]
7403  * freq = freq[1:iend] # <<<<<<<<<<<<<<
7404  * #%retaining only first half of the spectrum
7405  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
7406  */
7407  __pyx_t_6 = __Pyx_PyObject_GetSlice(__pyx_v_freq, 1, 0, NULL, &__pyx_v_iend, NULL, 1, 0, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7408  __Pyx_GOTREF(__pyx_t_6);
7409  __Pyx_DECREF_SET(__pyx_v_freq, __pyx_t_6);
7410  __pyx_t_6 = 0;
7411 
7412  /* "WaveTools.pyx":290
7413  * freq = freq[1:iend]
7414  * #%retaining only first half of the spectrum
7415  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies) # <<<<<<<<<<<<<<
7416  * ww = 2*pi*freq
7417  *
7418  */
7419  __pyx_t_6 = PyNumber_Absolute(__pyx_v_fft_x); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7420  __Pyx_GOTREF(__pyx_t_6);
7421  __pyx_t_2 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7422  __Pyx_GOTREF(__pyx_t_2);
7423  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7424  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_nfft); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 290; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7425  __Pyx_GOTREF(__pyx_t_6);
7426  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7427  __pyx_v_aa = __pyx_t_6;
7428  __pyx_t_6 = 0;
7429 
7430  /* "WaveTools.pyx":291
7431  * #%retaining only first half of the spectrum
7432  * aa = 2.*abs(fft_x)/nfft #%amplitudes (only the ones related to positive frequencies)
7433  * ww = 2*pi*freq # <<<<<<<<<<<<<<
7434  *
7435  *
7436  */
7437  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7438  __Pyx_GOTREF(__pyx_t_6);
7439  __pyx_t_2 = PyNumber_Multiply(__pyx_int_2, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7440  __Pyx_GOTREF(__pyx_t_2);
7441  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7442  __pyx_t_6 = PyNumber_Multiply(__pyx_t_2, __pyx_v_freq); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7443  __Pyx_GOTREF(__pyx_t_6);
7444  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7445  __pyx_v_ww = __pyx_t_6;
7446  __pyx_t_6 = 0;
7447 
7448  /* "WaveTools.pyx":294
7449  *
7450  *
7451  * pp = np.zeros(len(aa),complex) # <<<<<<<<<<<<<<
7452  * for k in range(len(aa)):
7453  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7454  */
7455  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7456  __Pyx_GOTREF(__pyx_t_2);
7457  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7458  __Pyx_GOTREF(__pyx_t_5);
7459  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7460  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7461  __pyx_t_2 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7462  __Pyx_GOTREF(__pyx_t_2);
7463  __pyx_t_4 = NULL;
7464  __pyx_t_1 = 0;
7465  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
7466  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_5);
7467  if (likely(__pyx_t_4)) {
7468  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
7469  __Pyx_INCREF(__pyx_t_4);
7470  __Pyx_INCREF(function);
7471  __Pyx_DECREF_SET(__pyx_t_5, function);
7472  __pyx_t_1 = 1;
7473  }
7474  }
7475  __pyx_t_3 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7476  __Pyx_GOTREF(__pyx_t_3);
7477  if (__pyx_t_4) {
7478  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
7479  }
7480  __Pyx_GIVEREF(__pyx_t_2);
7481  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_2);
7482  __Pyx_INCREF(((PyObject *)(&PyComplex_Type)));
7483  __Pyx_GIVEREF(((PyObject *)(&PyComplex_Type)));
7484  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, ((PyObject *)(&PyComplex_Type)));
7485  __pyx_t_2 = 0;
7486  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7487  __Pyx_GOTREF(__pyx_t_6);
7488  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7489  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7490  __pyx_v_pp = __pyx_t_6;
7491  __pyx_t_6 = 0;
7492 
7493  /* "WaveTools.pyx":295
7494  *
7495  * pp = np.zeros(len(aa),complex)
7496  * for k in range(len(aa)): # <<<<<<<<<<<<<<
7497  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7498  * pp = np.real(pp) # Append results to list
7499  */
7500  __pyx_t_1 = PyObject_Length(__pyx_v_aa); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 295; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7501  for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_1; __pyx_t_7+=1) {
7502  __pyx_v_k = __pyx_t_7;
7503 
7504  /* "WaveTools.pyx":296
7505  * pp = np.zeros(len(aa),complex)
7506  * for k in range(len(aa)):
7507  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases # <<<<<<<<<<<<<<
7508  * pp = np.real(pp) # Append results to list
7509  * results.append(ww)
7510  */
7511  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_cmath); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7512  __Pyx_GOTREF(__pyx_t_5);
7513  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_phase); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7514  __Pyx_GOTREF(__pyx_t_3);
7515  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7516  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_fft_x, __pyx_v_k, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
7517  __Pyx_GOTREF(__pyx_t_5);
7518  __pyx_t_2 = NULL;
7519  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
7520  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
7521  if (likely(__pyx_t_2)) {
7522  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
7523  __Pyx_INCREF(__pyx_t_2);
7524  __Pyx_INCREF(function);
7525  __Pyx_DECREF_SET(__pyx_t_3, function);
7526  }
7527  }
7528  if (!__pyx_t_2) {
7529  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7530  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7531  __Pyx_GOTREF(__pyx_t_6);
7532  } else {
7533  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7534  __Pyx_GOTREF(__pyx_t_4);
7535  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
7536  __Pyx_GIVEREF(__pyx_t_5);
7537  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
7538  __pyx_t_5 = 0;
7539  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7540  __Pyx_GOTREF(__pyx_t_6);
7541  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7542  }
7543  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7544  if (unlikely(__Pyx_SetItemInt(__pyx_v_pp, __pyx_v_k, __pyx_t_6, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 296; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7545  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
7546  }
7547 
7548  /* "WaveTools.pyx":297
7549  * for k in range(len(aa)):
7550  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7551  * pp = np.real(pp) # Append results to list # <<<<<<<<<<<<<<
7552  * results.append(ww)
7553  * results.append(aa)
7554  */
7555  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7556  __Pyx_GOTREF(__pyx_t_3);
7557  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_real); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7558  __Pyx_GOTREF(__pyx_t_4);
7559  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
7560  __pyx_t_3 = NULL;
7561  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
7562  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
7563  if (likely(__pyx_t_3)) {
7564  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
7565  __Pyx_INCREF(__pyx_t_3);
7566  __Pyx_INCREF(function);
7567  __Pyx_DECREF_SET(__pyx_t_4, function);
7568  }
7569  }
7570  if (!__pyx_t_3) {
7571  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_pp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7572  __Pyx_GOTREF(__pyx_t_6);
7573  } else {
7574  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7575  __Pyx_GOTREF(__pyx_t_5);
7576  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
7577  __Pyx_INCREF(__pyx_v_pp);
7578  __Pyx_GIVEREF(__pyx_v_pp);
7579  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_pp);
7580  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 297; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7581  __Pyx_GOTREF(__pyx_t_6);
7582  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
7583  }
7584  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
7585  __Pyx_DECREF_SET(__pyx_v_pp, __pyx_t_6);
7586  __pyx_t_6 = 0;
7587 
7588  /* "WaveTools.pyx":298
7589  * pp[k]=cmath.phase(fft_x[k]) #% Calculating phases phases
7590  * pp = np.real(pp) # Append results to list
7591  * results.append(ww) # <<<<<<<<<<<<<<
7592  * results.append(aa)
7593  * results.append(pp)
7594  */
7595  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_ww); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7596 
7597  /* "WaveTools.pyx":299
7598  * pp = np.real(pp) # Append results to list
7599  * results.append(ww)
7600  * results.append(aa) # <<<<<<<<<<<<<<
7601  * results.append(pp)
7602  * results.append(setup)
7603  */
7604  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_aa); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7605 
7606  /* "WaveTools.pyx":300
7607  * results.append(ww)
7608  * results.append(aa)
7609  * results.append(pp) # <<<<<<<<<<<<<<
7610  * results.append(setup)
7611  * return results
7612  */
7613  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_pp); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7614 
7615  /* "WaveTools.pyx":301
7616  * results.append(aa)
7617  * results.append(pp)
7618  * results.append(setup) # <<<<<<<<<<<<<<
7619  * return results
7620  *
7621  */
7622  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_results, __pyx_v_setup); if (unlikely(__pyx_t_8 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7623 
7624  /* "WaveTools.pyx":302
7625  * results.append(pp)
7626  * results.append(setup)
7627  * return results # <<<<<<<<<<<<<<
7628  *
7629  *
7630  */
7631  __Pyx_XDECREF(__pyx_r);
7632  __Pyx_INCREF(__pyx_v_results);
7633  __pyx_r = __pyx_v_results;
7634  goto __pyx_L0;
7635 
7636  /* "WaveTools.pyx":270
7637  * return wind
7638  *
7639  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
7640  * """ This function does a spectral decomposition of a time series with constant sampling.
7641  * It returns a list with results with four entries:
7642  */
7643 
7644  /* function exit code */
7645  __pyx_L1_error:;
7646  __Pyx_XDECREF(__pyx_t_2);
7647  __Pyx_XDECREF(__pyx_t_3);
7648  __Pyx_XDECREF(__pyx_t_4);
7649  __Pyx_XDECREF(__pyx_t_5);
7650  __Pyx_XDECREF(__pyx_t_6);
7651  __Pyx_AddTraceback("WaveTools.decompose_tseries", __pyx_clineno, __pyx_lineno, __pyx_filename);
7652  __pyx_r = NULL;
7653  __pyx_L0:;
7654  __Pyx_XDECREF(__pyx_v_nfft);
7655  __Pyx_XDECREF(__pyx_v_results);
7656  __Pyx_XDECREF(__pyx_v_fft_x);
7657  __Pyx_XDECREF(__pyx_v_freq);
7658  __Pyx_XDECREF(__pyx_v_iend);
7659  __Pyx_XDECREF(__pyx_v_setup);
7660  __Pyx_XDECREF(__pyx_v_aa);
7661  __Pyx_XDECREF(__pyx_v_ww);
7662  __Pyx_XDECREF(__pyx_v_pp);
7663  __Pyx_XGIVEREF(__pyx_r);
7664  __Pyx_RefNannyFinishContext();
7665  return __pyx_r;
7666 }
7667 
7668 /* "WaveTools.pyx":324
7669  * :phi0: Phase of the wave
7670  * """
7671  * def __init__(self, # <<<<<<<<<<<<<<
7672  * period,
7673  * waveHeight,
7674  */
7675 
7676 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__(CYTHON_UNUSED PyObject *__pyx_self) {
7677  PyObject *__pyx_r = NULL;
7678  __Pyx_RefNannyDeclarations
7679  PyObject *__pyx_t_1 = NULL;
7680  PyObject *__pyx_t_2 = NULL;
7681  int __pyx_lineno = 0;
7682  const char *__pyx_filename = NULL;
7683  int __pyx_clineno = 0;
7684  __Pyx_RefNannySetupContext("__defaults__", 0);
7685  __Pyx_XDECREF(__pyx_r);
7686 
7687  /* "WaveTools.pyx":334
7688  * waveType="Linear",
7689  * Ycoeff = None,
7690  * Bcoeff =None, meanVelocity = np.array([0.,0,0.]), # <<<<<<<<<<<<<<
7691  * phi0 = 0.):
7692  *
7693  */
7694  __pyx_t_1 = PyTuple_New(6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7695  __Pyx_GOTREF(__pyx_t_1);
7696  __Pyx_INCREF(((PyObject *)Py_None));
7697  __Pyx_GIVEREF(((PyObject *)Py_None));
7698  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)Py_None));
7699  __Pyx_INCREF(((PyObject*)__pyx_n_s_Linear));
7700  __Pyx_GIVEREF(((PyObject*)__pyx_n_s_Linear));
7701  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject*)__pyx_n_s_Linear));
7702  __Pyx_INCREF(((PyObject *)Py_None));
7703  __Pyx_GIVEREF(((PyObject *)Py_None));
7704  PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)Py_None));
7705  __Pyx_INCREF(((PyObject *)Py_None));
7706  __Pyx_GIVEREF(((PyObject *)Py_None));
7707  PyTuple_SET_ITEM(__pyx_t_1, 3, ((PyObject *)Py_None));
7708  __Pyx_INCREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7709  __Pyx_GIVEREF(__Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7710  PyTuple_SET_ITEM(__pyx_t_1, 4, __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self)->__pyx_arg_meanVelocity);
7711  __Pyx_INCREF(((PyObject*)__pyx_float_0_));
7712  __Pyx_GIVEREF(((PyObject*)__pyx_float_0_));
7713  PyTuple_SET_ITEM(__pyx_t_1, 5, ((PyObject*)__pyx_float_0_));
7714 
7715  /* "WaveTools.pyx":324
7716  * :phi0: Phase of the wave
7717  * """
7718  * def __init__(self, # <<<<<<<<<<<<<<
7719  * period,
7720  * waveHeight,
7721  */
7722  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7723  __Pyx_GOTREF(__pyx_t_2);
7724  __Pyx_GIVEREF(__pyx_t_1);
7725  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
7726  __Pyx_INCREF(Py_None);
7727  __Pyx_GIVEREF(Py_None);
7728  PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
7729  __pyx_t_1 = 0;
7730  __pyx_r = __pyx_t_2;
7731  __pyx_t_2 = 0;
7732  goto __pyx_L0;
7733 
7734  /* function exit code */
7735  __pyx_L1_error:;
7736  __Pyx_XDECREF(__pyx_t_1);
7737  __Pyx_XDECREF(__pyx_t_2);
7738  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__defaults__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7739  __pyx_r = NULL;
7740  __pyx_L0:;
7741  __Pyx_XGIVEREF(__pyx_r);
7742  __Pyx_RefNannyFinishContext();
7743  return __pyx_r;
7744 }
7745 
7746 /* Python wrapper */
7747 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
7748 static char __pyx_doc_9WaveTools_18MonochromaticWaves___init__[] = "MonochromaticWaves.__init__(self, period, waveHeight, mwl, depth, g, waveDir, wavelength=None, waveType='Linear', Ycoeff=None, Bcoeff=None, meanVelocity=<\077\077?>, phi0=0.0)";
7749 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves___init__};
7750 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
7751  PyObject *__pyx_v_self = 0;
7752  PyObject *__pyx_v_period = 0;
7753  PyObject *__pyx_v_waveHeight = 0;
7754  PyObject *__pyx_v_mwl = 0;
7755  PyObject *__pyx_v_depth = 0;
7756  PyObject *__pyx_v_g = 0;
7757  PyObject *__pyx_v_waveDir = 0;
7758  PyObject *__pyx_v_wavelength = 0;
7759  PyObject *__pyx_v_waveType = 0;
7760  PyObject *__pyx_v_Ycoeff = 0;
7761  PyObject *__pyx_v_Bcoeff = 0;
7762  PyObject *__pyx_v_meanVelocity = 0;
7763  PyObject *__pyx_v_phi0 = 0;
7764  int __pyx_lineno = 0;
7765  const char *__pyx_filename = NULL;
7766  int __pyx_clineno = 0;
7767  PyObject *__pyx_r = 0;
7768  __Pyx_RefNannyDeclarations
7769  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
7770  {
7771  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_period,&__pyx_n_s_waveHeight,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_g,&__pyx_n_s_waveDir,&__pyx_n_s_wavelength,&__pyx_n_s_waveType,&__pyx_n_s_Ycoeff,&__pyx_n_s_Bcoeff,&__pyx_n_s_meanVelocity,&__pyx_n_s_phi0,0};
7772  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
7773  __pyx_defaults *__pyx_dynamic_args = __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_self);
7774  values[7] = ((PyObject *)((PyObject *)Py_None));
7775  values[8] = ((PyObject *)((PyObject*)__pyx_n_s_Linear));
7776  values[9] = ((PyObject *)((PyObject *)Py_None));
7777  values[10] = ((PyObject *)((PyObject *)Py_None));
7778  values[11] = __pyx_dynamic_args->__pyx_arg_meanVelocity;
7779  values[12] = ((PyObject *)((PyObject*)__pyx_float_0_));
7780  if (unlikely(__pyx_kwds)) {
7781  Py_ssize_t kw_args;
7782  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
7783  switch (pos_args) {
7784  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
7785  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
7786  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
7787  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
7788  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
7789  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
7790  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
7791  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7792  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7793  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7794  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7795  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7796  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7797  case 0: break;
7798  default: goto __pyx_L5_argtuple_error;
7799  }
7800  kw_args = PyDict_Size(__pyx_kwds);
7801  switch (pos_args) {
7802  case 0:
7803  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
7804  else goto __pyx_L5_argtuple_error;
7805  case 1:
7806  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_period)) != 0)) kw_args--;
7807  else {
7808  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7809  }
7810  case 2:
7811  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveHeight)) != 0)) kw_args--;
7812  else {
7813  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7814  }
7815  case 3:
7816  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
7817  else {
7818  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7819  }
7820  case 4:
7821  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
7822  else {
7823  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7824  }
7825  case 5:
7826  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
7827  else {
7828  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7829  }
7830  case 6:
7831  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
7832  else {
7833  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7834  }
7835  case 7:
7836  if (kw_args > 0) {
7837  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_wavelength);
7838  if (value) { values[7] = value; kw_args--; }
7839  }
7840  case 8:
7841  if (kw_args > 0) {
7842  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveType);
7843  if (value) { values[8] = value; kw_args--; }
7844  }
7845  case 9:
7846  if (kw_args > 0) {
7847  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Ycoeff);
7848  if (value) { values[9] = value; kw_args--; }
7849  }
7850  case 10:
7851  if (kw_args > 0) {
7852  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Bcoeff);
7853  if (value) { values[10] = value; kw_args--; }
7854  }
7855  case 11:
7856  if (kw_args > 0) {
7857  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_meanVelocity);
7858  if (value) { values[11] = value; kw_args--; }
7859  }
7860  case 12:
7861  if (kw_args > 0) {
7862  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi0);
7863  if (value) { values[12] = value; kw_args--; }
7864  }
7865  }
7866  if (unlikely(kw_args > 0)) {
7867  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7868  }
7869  } else {
7870  switch (PyTuple_GET_SIZE(__pyx_args)) {
7871  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
7872  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
7873  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
7874  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
7875  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
7876  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
7877  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
7878  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
7879  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
7880  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
7881  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
7882  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
7883  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
7884  break;
7885  default: goto __pyx_L5_argtuple_error;
7886  }
7887  }
7888  __pyx_v_self = values[0];
7889  __pyx_v_period = values[1];
7890  __pyx_v_waveHeight = values[2];
7891  __pyx_v_mwl = values[3];
7892  __pyx_v_depth = values[4];
7893  __pyx_v_g = values[5];
7894  __pyx_v_waveDir = values[6];
7895  __pyx_v_wavelength = values[7];
7896  __pyx_v_waveType = values[8];
7897  __pyx_v_Ycoeff = values[9];
7898  __pyx_v_Bcoeff = values[10];
7899  __pyx_v_meanVelocity = values[11];
7900  __pyx_v_phi0 = values[12];
7901  }
7902  goto __pyx_L4_argument_unpacking_done;
7903  __pyx_L5_argtuple_error:;
7904  __Pyx_RaiseArgtupleInvalid("__init__", 0, 7, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
7905  __pyx_L3_error:;
7906  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
7907  __Pyx_RefNannyFinishContext();
7908  return NULL;
7909  __pyx_L4_argument_unpacking_done:;
7910  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_period, __pyx_v_waveHeight, __pyx_v_mwl, __pyx_v_depth, __pyx_v_g, __pyx_v_waveDir, __pyx_v_wavelength, __pyx_v_waveType, __pyx_v_Ycoeff, __pyx_v_Bcoeff, __pyx_v_meanVelocity, __pyx_v_phi0);
7911 
7912  /* function exit code */
7913  __Pyx_RefNannyFinishContext();
7914  return __pyx_r;
7915 }
7916 
7917 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_period, PyObject *__pyx_v_waveHeight, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_g, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_wavelength, PyObject *__pyx_v_waveType, PyObject *__pyx_v_Ycoeff, PyObject *__pyx_v_Bcoeff, PyObject *__pyx_v_meanVelocity, PyObject *__pyx_v_phi0) {
7918  PyObject *__pyx_r = NULL;
7919  __Pyx_RefNannyDeclarations
7920  PyObject *__pyx_t_1 = NULL;
7921  PyObject *__pyx_t_2 = NULL;
7922  int __pyx_t_3;
7923  int __pyx_t_4;
7924  PyObject *__pyx_t_5 = NULL;
7925  PyObject *__pyx_t_6 = NULL;
7926  PyObject *__pyx_t_7 = NULL;
7927  PyObject *__pyx_t_8 = NULL;
7928  Py_ssize_t __pyx_t_9;
7929  PyObject *__pyx_t_10 = NULL;
7930  PyObject *__pyx_t_11 = NULL;
7931  PyObject *__pyx_t_12 = NULL;
7932  int __pyx_t_13;
7933  int __pyx_lineno = 0;
7934  const char *__pyx_filename = NULL;
7935  int __pyx_clineno = 0;
7936  __Pyx_RefNannySetupContext("__init__", 0);
7937 
7938  /* "WaveTools.pyx":337
7939  * phi0 = 0.):
7940  *
7941  * self.knownWaveTypes = ["Linear","Fenton"] # <<<<<<<<<<<<<<
7942  * self.waveType = waveType
7943  * if self.waveType not in self.knownWaveTypes:
7944  */
7945  __pyx_t_1 = PyList_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7946  __Pyx_GOTREF(__pyx_t_1);
7947  __Pyx_INCREF(__pyx_n_s_Linear);
7948  __Pyx_GIVEREF(__pyx_n_s_Linear);
7949  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_Linear);
7950  __Pyx_INCREF(__pyx_n_s_Fenton);
7951  __Pyx_GIVEREF(__pyx_n_s_Fenton);
7952  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_Fenton);
7953  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7954  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7955 
7956  /* "WaveTools.pyx":338
7957  *
7958  * self.knownWaveTypes = ["Linear","Fenton"]
7959  * self.waveType = waveType # <<<<<<<<<<<<<<
7960  * if self.waveType not in self.knownWaveTypes:
7961  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
7962  */
7963  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveType, __pyx_v_waveType) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7964 
7965  /* "WaveTools.pyx":339
7966  * self.knownWaveTypes = ["Linear","Fenton"]
7967  * self.waveType = waveType
7968  * if self.waveType not in self.knownWaveTypes: # <<<<<<<<<<<<<<
7969  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
7970  * sys.exit(1)
7971  */
7972  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7973  __Pyx_GOTREF(__pyx_t_1);
7974  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7975  __Pyx_GOTREF(__pyx_t_2);
7976  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_NE)); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7977  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7978  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
7979  __pyx_t_4 = (__pyx_t_3 != 0);
7980  if (__pyx_t_4) {
7981 
7982  /* "WaveTools.pyx":340
7983  * self.waveType = waveType
7984  * if self.waveType not in self.knownWaveTypes:
7985  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0) # <<<<<<<<<<<<<<
7986  * sys.exit(1)
7987  * self.g = np.array(g)
7988  */
7989  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7990  __Pyx_GOTREF(__pyx_t_2);
7991  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_knownWaveTypes); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7992  __Pyx_GOTREF(__pyx_t_1);
7993  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_Wrong_wavetype_given_Valid_wavet, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7994  __Pyx_GOTREF(__pyx_t_5);
7995  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
7996  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
7997  __Pyx_GOTREF(__pyx_t_1);
7998  __Pyx_GIVEREF(__pyx_t_5);
7999  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
8000  __pyx_t_5 = 0;
8001  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8002  __Pyx_GOTREF(__pyx_t_5);
8003  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8004  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8005  __Pyx_GOTREF(__pyx_t_6);
8006  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8007  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8008  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8009  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8010 
8011  /* "WaveTools.pyx":341
8012  * if self.waveType not in self.knownWaveTypes:
8013  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8014  * sys.exit(1) # <<<<<<<<<<<<<<
8015  * self.g = np.array(g)
8016  * self.waveDir = setDirVector(np.array(waveDir))
8017  */
8018  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8019  __Pyx_GOTREF(__pyx_t_6);
8020  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8021  __Pyx_GOTREF(__pyx_t_5);
8022  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8023  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8024  __Pyx_GOTREF(__pyx_t_6);
8025  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8026  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8027 
8028  /* "WaveTools.pyx":339
8029  * self.knownWaveTypes = ["Linear","Fenton"]
8030  * self.waveType = waveType
8031  * if self.waveType not in self.knownWaveTypes: # <<<<<<<<<<<<<<
8032  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8033  * sys.exit(1)
8034  */
8035  }
8036 
8037  /* "WaveTools.pyx":342
8038  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
8039  * sys.exit(1)
8040  * self.g = np.array(g) # <<<<<<<<<<<<<<
8041  * self.waveDir = setDirVector(np.array(waveDir))
8042  * self.vDir = setVertDir(g)
8043  */
8044  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8045  __Pyx_GOTREF(__pyx_t_5);
8046  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8047  __Pyx_GOTREF(__pyx_t_1);
8048  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8049  __pyx_t_5 = NULL;
8050  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8051  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
8052  if (likely(__pyx_t_5)) {
8053  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8054  __Pyx_INCREF(__pyx_t_5);
8055  __Pyx_INCREF(function);
8056  __Pyx_DECREF_SET(__pyx_t_1, function);
8057  }
8058  }
8059  if (!__pyx_t_5) {
8060  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8061  __Pyx_GOTREF(__pyx_t_6);
8062  } else {
8063  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8064  __Pyx_GOTREF(__pyx_t_2);
8065  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5); __pyx_t_5 = NULL;
8066  __Pyx_INCREF(__pyx_v_g);
8067  __Pyx_GIVEREF(__pyx_v_g);
8068  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_g);
8069  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8070  __Pyx_GOTREF(__pyx_t_6);
8071  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8072  }
8073  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8074  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8075  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8076 
8077  /* "WaveTools.pyx":343
8078  * sys.exit(1)
8079  * self.g = np.array(g)
8080  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
8081  * self.vDir = setVertDir(g)
8082  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
8083  */
8084  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8085  __Pyx_GOTREF(__pyx_t_1);
8086  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8087  __Pyx_GOTREF(__pyx_t_5);
8088  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8089  __Pyx_GOTREF(__pyx_t_7);
8090  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8091  __pyx_t_5 = NULL;
8092  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
8093  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
8094  if (likely(__pyx_t_5)) {
8095  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
8096  __Pyx_INCREF(__pyx_t_5);
8097  __Pyx_INCREF(function);
8098  __Pyx_DECREF_SET(__pyx_t_7, function);
8099  }
8100  }
8101  if (!__pyx_t_5) {
8102  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_waveDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8103  __Pyx_GOTREF(__pyx_t_2);
8104  } else {
8105  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8106  __Pyx_GOTREF(__pyx_t_8);
8107  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
8108  __Pyx_INCREF(__pyx_v_waveDir);
8109  __Pyx_GIVEREF(__pyx_v_waveDir);
8110  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_v_waveDir);
8111  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8112  __Pyx_GOTREF(__pyx_t_2);
8113  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8114  }
8115  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8116  __pyx_t_7 = NULL;
8117  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8118  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8119  if (likely(__pyx_t_7)) {
8120  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8121  __Pyx_INCREF(__pyx_t_7);
8122  __Pyx_INCREF(function);
8123  __Pyx_DECREF_SET(__pyx_t_1, function);
8124  }
8125  }
8126  if (!__pyx_t_7) {
8127  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8128  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8129  __Pyx_GOTREF(__pyx_t_6);
8130  } else {
8131  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8132  __Pyx_GOTREF(__pyx_t_8);
8133  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
8134  __Pyx_GIVEREF(__pyx_t_2);
8135  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_2);
8136  __pyx_t_2 = 0;
8137  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8138  __Pyx_GOTREF(__pyx_t_6);
8139  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8140  }
8141  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8142  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 343; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8143  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8144 
8145  /* "WaveTools.pyx":344
8146  * self.g = np.array(g)
8147  * self.waveDir = setDirVector(np.array(waveDir))
8148  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
8149  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
8150  *
8151  */
8152  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8153  __Pyx_GOTREF(__pyx_t_1);
8154  __pyx_t_8 = NULL;
8155  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8156  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
8157  if (likely(__pyx_t_8)) {
8158  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8159  __Pyx_INCREF(__pyx_t_8);
8160  __Pyx_INCREF(function);
8161  __Pyx_DECREF_SET(__pyx_t_1, function);
8162  }
8163  }
8164  if (!__pyx_t_8) {
8165  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_g); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8166  __Pyx_GOTREF(__pyx_t_6);
8167  } else {
8168  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8169  __Pyx_GOTREF(__pyx_t_2);
8170  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_8); __pyx_t_8 = NULL;
8171  __Pyx_INCREF(__pyx_v_g);
8172  __Pyx_GIVEREF(__pyx_v_g);
8173  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_v_g);
8174  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8175  __Pyx_GOTREF(__pyx_t_6);
8176  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8177  }
8178  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8179  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8180  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8181 
8182  /* "WaveTools.pyx":345
8183  * self.waveDir = setDirVector(np.array(waveDir))
8184  * self.vDir = setVertDir(g)
8185  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
8186  *
8187  * #Checking if g and waveDir are perpendicular
8188  */
8189  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8190  __Pyx_GOTREF(__pyx_t_1);
8191  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8192  __Pyx_GOTREF(__pyx_t_2);
8193  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8194  __Pyx_GOTREF(__pyx_t_8);
8195  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8196  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8197  __Pyx_GOTREF(__pyx_t_2);
8198  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8199  __Pyx_GOTREF(__pyx_t_7);
8200  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8201  __pyx_t_2 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8202  __Pyx_GOTREF(__pyx_t_2);
8203  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8204  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8205  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8206  __Pyx_GOTREF(__pyx_t_7);
8207  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8208  __Pyx_GOTREF(__pyx_t_8);
8209  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8210  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8211  __Pyx_GOTREF(__pyx_t_7);
8212  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8213  __Pyx_GOTREF(__pyx_t_5);
8214  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8215  __pyx_t_7 = PyNumber_Multiply(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8216  __Pyx_GOTREF(__pyx_t_7);
8217  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8218  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8219  __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8220  __Pyx_GOTREF(__pyx_t_5);
8221  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8222  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8223  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8224  __Pyx_GOTREF(__pyx_t_7);
8225  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8226  __Pyx_GOTREF(__pyx_t_2);
8227  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8228  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8229  __Pyx_GOTREF(__pyx_t_7);
8230  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_7, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
8231  __Pyx_GOTREF(__pyx_t_8);
8232  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8233  __pyx_t_7 = PyNumber_Multiply(__pyx_t_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8234  __Pyx_GOTREF(__pyx_t_7);
8235  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8236  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8237  __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8238  __Pyx_GOTREF(__pyx_t_8);
8239  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8240  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8241  __pyx_t_7 = NULL;
8242  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8243  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8244  if (likely(__pyx_t_7)) {
8245  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8246  __Pyx_INCREF(__pyx_t_7);
8247  __Pyx_INCREF(function);
8248  __Pyx_DECREF_SET(__pyx_t_1, function);
8249  }
8250  }
8251  if (!__pyx_t_7) {
8252  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8253  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8254  __Pyx_GOTREF(__pyx_t_6);
8255  } else {
8256  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8257  __Pyx_GOTREF(__pyx_t_5);
8258  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_7); __pyx_t_7 = NULL;
8259  __Pyx_GIVEREF(__pyx_t_8);
8260  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_8);
8261  __pyx_t_8 = 0;
8262  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8263  __Pyx_GOTREF(__pyx_t_6);
8264  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8265  }
8266  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8267  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8268  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8269 
8270  /* "WaveTools.pyx":348
8271  *
8272  * #Checking if g and waveDir are perpendicular
8273  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
8274  * self.phi0=phi0
8275  * self.period = period
8276  */
8277  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8278  __Pyx_GOTREF(__pyx_t_1);
8279  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8280  __Pyx_GOTREF(__pyx_t_5);
8281  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8282  __Pyx_GOTREF(__pyx_t_8);
8283  __pyx_t_7 = NULL;
8284  __pyx_t_9 = 0;
8285  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8286  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
8287  if (likely(__pyx_t_7)) {
8288  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8289  __Pyx_INCREF(__pyx_t_7);
8290  __Pyx_INCREF(function);
8291  __Pyx_DECREF_SET(__pyx_t_1, function);
8292  __pyx_t_9 = 1;
8293  }
8294  }
8295  __pyx_t_2 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8296  __Pyx_GOTREF(__pyx_t_2);
8297  if (__pyx_t_7) {
8298  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7); __pyx_t_7 = NULL;
8299  }
8300  __Pyx_GIVEREF(__pyx_t_5);
8301  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_9, __pyx_t_5);
8302  __Pyx_GIVEREF(__pyx_t_8);
8303  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_9, __pyx_t_8);
8304  __pyx_t_5 = 0;
8305  __pyx_t_8 = 0;
8306  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8307  __Pyx_GOTREF(__pyx_t_6);
8308  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8309  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8310  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8311 
8312  /* "WaveTools.pyx":349
8313  * #Checking if g and waveDir are perpendicular
8314  * dirCheck(self.waveDir,self.vDir)
8315  * self.phi0=phi0 # <<<<<<<<<<<<<<
8316  * self.period = period
8317  * self.waveHeight = waveHeight
8318  */
8319  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi0, __pyx_v_phi0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8320 
8321  /* "WaveTools.pyx":350
8322  * dirCheck(self.waveDir,self.vDir)
8323  * self.phi0=phi0
8324  * self.period = period # <<<<<<<<<<<<<<
8325  * self.waveHeight = waveHeight
8326  * self.mwl = mwl
8327  */
8328  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_period, __pyx_v_period) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 350; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8329 
8330  /* "WaveTools.pyx":351
8331  * self.phi0=phi0
8332  * self.period = period
8333  * self.waveHeight = waveHeight # <<<<<<<<<<<<<<
8334  * self.mwl = mwl
8335  * self.depth = depth
8336  */
8337  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveHeight, __pyx_v_waveHeight) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 351; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8338 
8339  /* "WaveTools.pyx":352
8340  * self.period = period
8341  * self.waveHeight = waveHeight
8342  * self.mwl = mwl # <<<<<<<<<<<<<<
8343  * self.depth = depth
8344  * self.omega = 2.0*pi/period
8345  */
8346  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8347 
8348  /* "WaveTools.pyx":353
8349  * self.waveHeight = waveHeight
8350  * self.mwl = mwl
8351  * self.depth = depth # <<<<<<<<<<<<<<
8352  * self.omega = 2.0*pi/period
8353  *
8354  */
8355  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8356 
8357  /* "WaveTools.pyx":354
8358  * self.mwl = mwl
8359  * self.depth = depth
8360  * self.omega = 2.0*pi/period # <<<<<<<<<<<<<<
8361  *
8362  * #Calculating / checking wavelength data
8363  */
8364  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8365  __Pyx_GOTREF(__pyx_t_6);
8366  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8367  __Pyx_GOTREF(__pyx_t_1);
8368  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8369  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_v_period); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8370  __Pyx_GOTREF(__pyx_t_6);
8371  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8372  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8373  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8374 
8375  /* "WaveTools.pyx":357
8376  *
8377  * #Calculating / checking wavelength data
8378  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8379  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8380  * self.wavelength = 2.0*pi/self.k
8381  */
8382  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 357; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8383  __Pyx_GOTREF(__pyx_t_6);
8384  __pyx_t_4 = (__pyx_t_6 == __pyx_n_s_Linear);
8385  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8386  __pyx_t_3 = (__pyx_t_4 != 0);
8387  if (__pyx_t_3) {
8388 
8389  /* "WaveTools.pyx":358
8390  * #Calculating / checking wavelength data
8391  * if self.waveType is "Linear":
8392  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
8393  * self.wavelength = 2.0*pi/self.k
8394  * else:
8395  */
8396  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8397  __Pyx_GOTREF(__pyx_t_6);
8398  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8399  __Pyx_GOTREF(__pyx_t_1);
8400  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8401  __Pyx_GOTREF(__pyx_t_2);
8402  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_w, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8403  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8404  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8405  __Pyx_GOTREF(__pyx_t_2);
8406  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_d, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8407  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8408  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8409  __Pyx_GOTREF(__pyx_t_2);
8410  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_g, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8411  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8412  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8413  __Pyx_GOTREF(__pyx_t_2);
8414  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8415  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8416  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_k, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8417  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8418 
8419  /* "WaveTools.pyx":359
8420  * if self.waveType is "Linear":
8421  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8422  * self.wavelength = 2.0*pi/self.k # <<<<<<<<<<<<<<
8423  * else:
8424  * try:
8425  */
8426  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8427  __Pyx_GOTREF(__pyx_t_2);
8428  __pyx_t_1 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8429  __Pyx_GOTREF(__pyx_t_1);
8430  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8431  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8432  __Pyx_GOTREF(__pyx_t_2);
8433  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8434  __Pyx_GOTREF(__pyx_t_6);
8435  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8436  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8437  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_wavelength, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8438  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8439 
8440  /* "WaveTools.pyx":357
8441  *
8442  * #Calculating / checking wavelength data
8443  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8444  * self.k = dispersion(w=self.omega,d=self.depth,g=self.gAbs)
8445  * self.wavelength = 2.0*pi/self.k
8446  */
8447  goto __pyx_L4;
8448  }
8449 
8450  /* "WaveTools.pyx":361
8451  * self.wavelength = 2.0*pi/self.k
8452  * else:
8453  * try: # <<<<<<<<<<<<<<
8454  * self.k = 2.0*pi/wavelength
8455  * self.wavelength=wavelength
8456  */
8457  /*else*/ {
8458  {
8459  __Pyx_ExceptionSave(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
8460  __Pyx_XGOTREF(__pyx_t_10);
8461  __Pyx_XGOTREF(__pyx_t_11);
8462  __Pyx_XGOTREF(__pyx_t_12);
8463  /*try:*/ {
8464 
8465  /* "WaveTools.pyx":362
8466  * else:
8467  * try:
8468  * self.k = 2.0*pi/wavelength # <<<<<<<<<<<<<<
8469  * self.wavelength=wavelength
8470  * except:
8471  */
8472  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8473  __Pyx_GOTREF(__pyx_t_6);
8474  __pyx_t_2 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8475  __Pyx_GOTREF(__pyx_t_2);
8476  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8477  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_v_wavelength); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8478  __Pyx_GOTREF(__pyx_t_6);
8479  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8480  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_k, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8481  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8482 
8483  /* "WaveTools.pyx":363
8484  * try:
8485  * self.k = 2.0*pi/wavelength
8486  * self.wavelength=wavelength # <<<<<<<<<<<<<<
8487  * except:
8488  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8489  */
8490  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_wavelength, __pyx_v_wavelength) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
8491 
8492  /* "WaveTools.pyx":361
8493  * self.wavelength = 2.0*pi/self.k
8494  * else:
8495  * try: # <<<<<<<<<<<<<<
8496  * self.k = 2.0*pi/wavelength
8497  * self.wavelength=wavelength
8498  */
8499  }
8500  __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
8501  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
8502  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
8503  goto __pyx_L12_try_end;
8504  __pyx_L5_error:;
8505  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
8506  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
8507  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
8508  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
8509  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
8510  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
8511 
8512  /* "WaveTools.pyx":364
8513  * self.k = 2.0*pi/wavelength
8514  * self.wavelength=wavelength
8515  * except: # <<<<<<<<<<<<<<
8516  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8517  * sys.exit(1)
8518  */
8519  /*except:*/ {
8520  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8521  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 364; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8522  __Pyx_GOTREF(__pyx_t_6);
8523  __Pyx_GOTREF(__pyx_t_2);
8524  __Pyx_GOTREF(__pyx_t_1);
8525 
8526  /* "WaveTools.pyx":365
8527  * self.wavelength=wavelength
8528  * except:
8529  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
8530  * sys.exit(1)
8531  * self.kDir = self.k * self.waveDir
8532  */
8533  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8534  __Pyx_GOTREF(__pyx_t_8);
8535  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8536  __Pyx_GOTREF(__pyx_t_5);
8537  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8538  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__38, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8539  __Pyx_GOTREF(__pyx_t_7);
8540  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
8541  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8542  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8543 
8544  /* "WaveTools.pyx":366
8545  * except:
8546  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8547  * sys.exit(1) # <<<<<<<<<<<<<<
8548  * self.kDir = self.k * self.waveDir
8549  * self.amplitude = 0.5*self.waveHeight
8550  */
8551  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8552  __Pyx_GOTREF(__pyx_t_7);
8553  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8554  __Pyx_GOTREF(__pyx_t_5);
8555  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8556  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L7_except_error;}
8557  __Pyx_GOTREF(__pyx_t_7);
8558  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
8559  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8560  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8561  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8562  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8563  goto __pyx_L6_exception_handled;
8564  }
8565  __pyx_L7_except_error:;
8566 
8567  /* "WaveTools.pyx":361
8568  * self.wavelength = 2.0*pi/self.k
8569  * else:
8570  * try: # <<<<<<<<<<<<<<
8571  * self.k = 2.0*pi/wavelength
8572  * self.wavelength=wavelength
8573  */
8574  __Pyx_XGIVEREF(__pyx_t_10);
8575  __Pyx_XGIVEREF(__pyx_t_11);
8576  __Pyx_XGIVEREF(__pyx_t_12);
8577  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
8578  goto __pyx_L1_error;
8579  __pyx_L6_exception_handled:;
8580  __Pyx_XGIVEREF(__pyx_t_10);
8581  __Pyx_XGIVEREF(__pyx_t_11);
8582  __Pyx_XGIVEREF(__pyx_t_12);
8583  __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
8584  __pyx_L12_try_end:;
8585  }
8586  }
8587  __pyx_L4:;
8588 
8589  /* "WaveTools.pyx":367
8590  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
8591  * sys.exit(1)
8592  * self.kDir = self.k * self.waveDir # <<<<<<<<<<<<<<
8593  * self.amplitude = 0.5*self.waveHeight
8594  * self.meanVelocity = np.array(meanVelocity)
8595  */
8596  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8597  __Pyx_GOTREF(__pyx_t_1);
8598  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8599  __Pyx_GOTREF(__pyx_t_2);
8600  __pyx_t_6 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8601  __Pyx_GOTREF(__pyx_t_6);
8602  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8603  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8604  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 367; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8605  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8606 
8607  /* "WaveTools.pyx":368
8608  * sys.exit(1)
8609  * self.kDir = self.k * self.waveDir
8610  * self.amplitude = 0.5*self.waveHeight # <<<<<<<<<<<<<<
8611  * self.meanVelocity = np.array(meanVelocity)
8612  * #Checking that meanvelocity is a vector
8613  */
8614  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveHeight); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8615  __Pyx_GOTREF(__pyx_t_6);
8616  __pyx_t_2 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8617  __Pyx_GOTREF(__pyx_t_2);
8618  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8619  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_amplitude, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8620  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8621 
8622  /* "WaveTools.pyx":369
8623  * self.kDir = self.k * self.waveDir
8624  * self.amplitude = 0.5*self.waveHeight
8625  * self.meanVelocity = np.array(meanVelocity) # <<<<<<<<<<<<<<
8626  * #Checking that meanvelocity is a vector
8627  *
8628  */
8629  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8630  __Pyx_GOTREF(__pyx_t_6);
8631  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8632  __Pyx_GOTREF(__pyx_t_1);
8633  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
8634  __pyx_t_6 = NULL;
8635  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
8636  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
8637  if (likely(__pyx_t_6)) {
8638  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
8639  __Pyx_INCREF(__pyx_t_6);
8640  __Pyx_INCREF(function);
8641  __Pyx_DECREF_SET(__pyx_t_1, function);
8642  }
8643  }
8644  if (!__pyx_t_6) {
8645  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_v_meanVelocity); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8646  __Pyx_GOTREF(__pyx_t_2);
8647  } else {
8648  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8649  __Pyx_GOTREF(__pyx_t_7);
8650  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
8651  __Pyx_INCREF(__pyx_v_meanVelocity);
8652  __Pyx_GIVEREF(__pyx_v_meanVelocity);
8653  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_meanVelocity);
8654  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8655  __Pyx_GOTREF(__pyx_t_2);
8656  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8657  }
8658  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8659  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_meanVelocity, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8660  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8661 
8662  /* "WaveTools.pyx":372
8663  * #Checking that meanvelocity is a vector
8664  *
8665  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
8666  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8667  * sys.exit(1)
8668  */
8669  __pyx_t_9 = PyObject_Length(__pyx_v_meanVelocity); if (unlikely(__pyx_t_9 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8670  __pyx_t_3 = ((__pyx_t_9 != 3) != 0);
8671  if (__pyx_t_3) {
8672 
8673  /* "WaveTools.pyx":373
8674  *
8675  * if(len(meanVelocity) != 3):
8676  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
8677  * sys.exit(1)
8678  *
8679  */
8680  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8681  __Pyx_GOTREF(__pyx_t_2);
8682  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8683  __Pyx_GOTREF(__pyx_t_1);
8684  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8685  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_tuple__40, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8686  __Pyx_GOTREF(__pyx_t_7);
8687  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8688  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8689  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8690 
8691  /* "WaveTools.pyx":374
8692  * if(len(meanVelocity) != 3):
8693  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8694  * sys.exit(1) # <<<<<<<<<<<<<<
8695  *
8696  * self.Ycoeff = Ycoeff
8697  */
8698  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8699  __Pyx_GOTREF(__pyx_t_7);
8700  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8701  __Pyx_GOTREF(__pyx_t_1);
8702  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8703  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__41, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8704  __Pyx_GOTREF(__pyx_t_7);
8705  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8706  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8707 
8708  /* "WaveTools.pyx":372
8709  * #Checking that meanvelocity is a vector
8710  *
8711  * if(len(meanVelocity) != 3): # <<<<<<<<<<<<<<
8712  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
8713  * sys.exit(1)
8714  */
8715  }
8716 
8717  /* "WaveTools.pyx":376
8718  * sys.exit(1)
8719  *
8720  * self.Ycoeff = Ycoeff # <<<<<<<<<<<<<<
8721  * self.Bcoeff = Bcoeff
8722  *
8723  */
8724  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Ycoeff, __pyx_v_Ycoeff) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8725 
8726  /* "WaveTools.pyx":377
8727  *
8728  * self.Ycoeff = Ycoeff
8729  * self.Bcoeff = Bcoeff # <<<<<<<<<<<<<<
8730  *
8731  * # Checking for
8732  */
8733  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Bcoeff, __pyx_v_Bcoeff) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8734 
8735  /* "WaveTools.pyx":380
8736  *
8737  * # Checking for
8738  * if (Ycoeff is None) or (Bcoeff is None): # <<<<<<<<<<<<<<
8739  * if self.waveType is not "Linear":
8740  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8741  */
8742  __pyx_t_4 = (__pyx_v_Ycoeff == Py_None);
8743  __pyx_t_13 = (__pyx_t_4 != 0);
8744  if (!__pyx_t_13) {
8745  } else {
8746  __pyx_t_3 = __pyx_t_13;
8747  goto __pyx_L17_bool_binop_done;
8748  }
8749  __pyx_t_13 = (__pyx_v_Bcoeff == Py_None);
8750  __pyx_t_4 = (__pyx_t_13 != 0);
8751  __pyx_t_3 = __pyx_t_4;
8752  __pyx_L17_bool_binop_done:;
8753  if (__pyx_t_3) {
8754 
8755  /* "WaveTools.pyx":381
8756  * # Checking for
8757  * if (Ycoeff is None) or (Bcoeff is None):
8758  * if self.waveType is not "Linear": # <<<<<<<<<<<<<<
8759  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8760  * sys.exit(1)
8761  */
8762  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8763  __Pyx_GOTREF(__pyx_t_7);
8764  __pyx_t_3 = (__pyx_t_7 != __pyx_n_s_Linear);
8765  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8766  __pyx_t_4 = (__pyx_t_3 != 0);
8767  if (__pyx_t_4) {
8768 
8769  /* "WaveTools.pyx":382
8770  * if (Ycoeff is None) or (Bcoeff is None):
8771  * if self.waveType is not "Linear":
8772  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0) # <<<<<<<<<<<<<<
8773  * sys.exit(1)
8774  * def eta(self, x, t):
8775  */
8776  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8777  __Pyx_GOTREF(__pyx_t_7);
8778  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8779  __Pyx_GOTREF(__pyx_t_1);
8780  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8781  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__42, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8782  __Pyx_GOTREF(__pyx_t_2);
8783  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
8784  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8785  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8786 
8787  /* "WaveTools.pyx":383
8788  * if self.waveType is not "Linear":
8789  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8790  * sys.exit(1) # <<<<<<<<<<<<<<
8791  * def eta(self, x, t):
8792  * if self.waveType is "Linear":
8793  */
8794  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8795  __Pyx_GOTREF(__pyx_t_2);
8796  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8797  __Pyx_GOTREF(__pyx_t_1);
8798  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8799  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__43, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8800  __Pyx_GOTREF(__pyx_t_2);
8801  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8802  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
8803 
8804  /* "WaveTools.pyx":381
8805  * # Checking for
8806  * if (Ycoeff is None) or (Bcoeff is None):
8807  * if self.waveType is not "Linear": # <<<<<<<<<<<<<<
8808  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8809  * sys.exit(1)
8810  */
8811  }
8812 
8813  /* "WaveTools.pyx":380
8814  *
8815  * # Checking for
8816  * if (Ycoeff is None) or (Bcoeff is None): # <<<<<<<<<<<<<<
8817  * if self.waveType is not "Linear":
8818  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8819  */
8820  }
8821 
8822  /* "WaveTools.pyx":324
8823  * :phi0: Phase of the wave
8824  * """
8825  * def __init__(self, # <<<<<<<<<<<<<<
8826  * period,
8827  * waveHeight,
8828  */
8829 
8830  /* function exit code */
8831  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
8832  goto __pyx_L0;
8833  __pyx_L1_error:;
8834  __Pyx_XDECREF(__pyx_t_1);
8835  __Pyx_XDECREF(__pyx_t_2);
8836  __Pyx_XDECREF(__pyx_t_5);
8837  __Pyx_XDECREF(__pyx_t_6);
8838  __Pyx_XDECREF(__pyx_t_7);
8839  __Pyx_XDECREF(__pyx_t_8);
8840  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
8841  __pyx_r = NULL;
8842  __pyx_L0:;
8843  __Pyx_XGIVEREF(__pyx_r);
8844  __Pyx_RefNannyFinishContext();
8845  return __pyx_r;
8846 }
8847 
8848 /* "WaveTools.pyx":384
8849  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
8850  * sys.exit(1)
8851  * def eta(self, x, t): # <<<<<<<<<<<<<<
8852  * if self.waveType is "Linear":
8853  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
8854  */
8855 
8856 /* Python wrapper */
8857 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
8858 static char __pyx_doc_9WaveTools_18MonochromaticWaves_2eta[] = "MonochromaticWaves.eta(self, x, t)";
8859 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_2eta};
8860 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
8861  PyObject *__pyx_v_self = 0;
8862  PyObject *__pyx_v_x = 0;
8863  PyObject *__pyx_v_t = 0;
8864  int __pyx_lineno = 0;
8865  const char *__pyx_filename = NULL;
8866  int __pyx_clineno = 0;
8867  PyObject *__pyx_r = 0;
8868  __Pyx_RefNannyDeclarations
8869  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
8870  {
8871  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
8872  PyObject* values[3] = {0,0,0};
8873  if (unlikely(__pyx_kwds)) {
8874  Py_ssize_t kw_args;
8875  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
8876  switch (pos_args) {
8877  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8878  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8879  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8880  case 0: break;
8881  default: goto __pyx_L5_argtuple_error;
8882  }
8883  kw_args = PyDict_Size(__pyx_kwds);
8884  switch (pos_args) {
8885  case 0:
8886  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
8887  else goto __pyx_L5_argtuple_error;
8888  case 1:
8889  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
8890  else {
8891  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8892  }
8893  case 2:
8894  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
8895  else {
8896  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8897  }
8898  }
8899  if (unlikely(kw_args > 0)) {
8900  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8901  }
8902  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
8903  goto __pyx_L5_argtuple_error;
8904  } else {
8905  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
8906  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
8907  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
8908  }
8909  __pyx_v_self = values[0];
8910  __pyx_v_x = values[1];
8911  __pyx_v_t = values[2];
8912  }
8913  goto __pyx_L4_argument_unpacking_done;
8914  __pyx_L5_argtuple_error:;
8915  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
8916  __pyx_L3_error:;
8917  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
8918  __Pyx_RefNannyFinishContext();
8919  return NULL;
8920  __pyx_L4_argument_unpacking_done:;
8921  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
8922 
8923  /* function exit code */
8924  __Pyx_RefNannyFinishContext();
8925  return __pyx_r;
8926 }
8927 
8928 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
8929  PyObject *__pyx_v_HH = NULL;
8930  double __pyx_v_ii;
8931  PyObject *__pyx_v_Y = NULL;
8932  PyObject *__pyx_r = NULL;
8933  __Pyx_RefNannyDeclarations
8934  PyObject *__pyx_t_1 = NULL;
8935  int __pyx_t_2;
8936  int __pyx_t_3;
8937  PyObject *__pyx_t_4 = NULL;
8938  PyObject *__pyx_t_5 = NULL;
8939  PyObject *__pyx_t_6 = NULL;
8940  PyObject *__pyx_t_7 = NULL;
8941  PyObject *__pyx_t_8 = NULL;
8942  PyObject *__pyx_t_9 = NULL;
8943  Py_ssize_t __pyx_t_10;
8944  PyObject *__pyx_t_11 = NULL;
8945  PyObject *(*__pyx_t_12)(PyObject *);
8946  Py_ssize_t __pyx_t_13;
8947  int __pyx_lineno = 0;
8948  const char *__pyx_filename = NULL;
8949  int __pyx_clineno = 0;
8950  __Pyx_RefNannySetupContext("eta", 0);
8951 
8952  /* "WaveTools.pyx":385
8953  * sys.exit(1)
8954  * def eta(self, x, t):
8955  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
8956  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
8957  * elif self.waveType is "Fenton":
8958  */
8959  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8960  __Pyx_GOTREF(__pyx_t_1);
8961  __pyx_t_2 = (__pyx_t_1 == __pyx_n_s_Linear);
8962  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
8963  __pyx_t_3 = (__pyx_t_2 != 0);
8964  if (__pyx_t_3) {
8965 
8966  /* "WaveTools.pyx":386
8967  * def eta(self, x, t):
8968  * if self.waveType is "Linear":
8969  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude) # <<<<<<<<<<<<<<
8970  * elif self.waveType is "Fenton":
8971  * HH = 0.
8972  */
8973  __Pyx_XDECREF(__pyx_r);
8974  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8975  __Pyx_GOTREF(__pyx_t_4);
8976  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8977  __Pyx_GOTREF(__pyx_t_5);
8978  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8979  __Pyx_GOTREF(__pyx_t_6);
8980  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8981  __Pyx_GOTREF(__pyx_t_7);
8982  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_amplitude); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8983  __Pyx_GOTREF(__pyx_t_8);
8984  __pyx_t_9 = NULL;
8985  __pyx_t_10 = 0;
8986  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
8987  __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_4);
8988  if (likely(__pyx_t_9)) {
8989  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
8990  __Pyx_INCREF(__pyx_t_9);
8991  __Pyx_INCREF(function);
8992  __Pyx_DECREF_SET(__pyx_t_4, function);
8993  __pyx_t_10 = 1;
8994  }
8995  }
8996  __pyx_t_11 = PyTuple_New(6+__pyx_t_10); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
8997  __Pyx_GOTREF(__pyx_t_11);
8998  if (__pyx_t_9) {
8999  __Pyx_GIVEREF(__pyx_t_9); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9); __pyx_t_9 = NULL;
9000  }
9001  __Pyx_INCREF(__pyx_v_x);
9002  __Pyx_GIVEREF(__pyx_v_x);
9003  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_10, __pyx_v_x);
9004  __Pyx_INCREF(__pyx_v_t);
9005  __Pyx_GIVEREF(__pyx_v_t);
9006  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_10, __pyx_v_t);
9007  __Pyx_GIVEREF(__pyx_t_5);
9008  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_10, __pyx_t_5);
9009  __Pyx_GIVEREF(__pyx_t_6);
9010  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_10, __pyx_t_6);
9011  __Pyx_GIVEREF(__pyx_t_7);
9012  PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_10, __pyx_t_7);
9013  __Pyx_GIVEREF(__pyx_t_8);
9014  PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_10, __pyx_t_8);
9015  __pyx_t_5 = 0;
9016  __pyx_t_6 = 0;
9017  __pyx_t_7 = 0;
9018  __pyx_t_8 = 0;
9019  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9020  __Pyx_GOTREF(__pyx_t_1);
9021  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9022  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9023  __pyx_r = __pyx_t_1;
9024  __pyx_t_1 = 0;
9025  goto __pyx_L0;
9026 
9027  /* "WaveTools.pyx":385
9028  * sys.exit(1)
9029  * def eta(self, x, t):
9030  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9031  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9032  * elif self.waveType is "Fenton":
9033  */
9034  }
9035 
9036  /* "WaveTools.pyx":387
9037  * if self.waveType is "Linear":
9038  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9039  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9040  * HH = 0.
9041  * ii =0.
9042  */
9043  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9044  __Pyx_GOTREF(__pyx_t_1);
9045  __pyx_t_3 = (__pyx_t_1 == __pyx_n_s_Fenton);
9046  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9047  __pyx_t_2 = (__pyx_t_3 != 0);
9048  if (__pyx_t_2) {
9049 
9050  /* "WaveTools.pyx":388
9051  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9052  * elif self.waveType is "Fenton":
9053  * HH = 0. # <<<<<<<<<<<<<<
9054  * ii =0.
9055  * for Y in self.Ycoeff:
9056  */
9057  __Pyx_INCREF(__pyx_float_0_);
9058  __pyx_v_HH = __pyx_float_0_;
9059 
9060  /* "WaveTools.pyx":389
9061  * elif self.waveType is "Fenton":
9062  * HH = 0.
9063  * ii =0. # <<<<<<<<<<<<<<
9064  * for Y in self.Ycoeff:
9065  * ii+=1
9066  */
9067  __pyx_v_ii = 0.;
9068 
9069  /* "WaveTools.pyx":390
9070  * HH = 0.
9071  * ii =0.
9072  * for Y in self.Ycoeff: # <<<<<<<<<<<<<<
9073  * ii+=1
9074  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,self.phi0,Y)
9075  */
9076  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Ycoeff); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9077  __Pyx_GOTREF(__pyx_t_1);
9078  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
9079  __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_10 = 0;
9080  __pyx_t_12 = NULL;
9081  } else {
9082  __pyx_t_10 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9083  __Pyx_GOTREF(__pyx_t_4);
9084  __pyx_t_12 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9085  }
9086  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9087  for (;;) {
9088  if (likely(!__pyx_t_12)) {
9089  if (likely(PyList_CheckExact(__pyx_t_4))) {
9090  if (__pyx_t_10 >= PyList_GET_SIZE(__pyx_t_4)) break;
9091  #if CYTHON_COMPILING_IN_CPYTHON
9092  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9093  #else
9094  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9095  __Pyx_GOTREF(__pyx_t_1);
9096  #endif
9097  } else {
9098  if (__pyx_t_10 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
9099  #if CYTHON_COMPILING_IN_CPYTHON
9100  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_10); __Pyx_INCREF(__pyx_t_1); __pyx_t_10++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9101  #else
9102  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_10); __pyx_t_10++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9103  __Pyx_GOTREF(__pyx_t_1);
9104  #endif
9105  }
9106  } else {
9107  __pyx_t_1 = __pyx_t_12(__pyx_t_4);
9108  if (unlikely(!__pyx_t_1)) {
9109  PyObject* exc_type = PyErr_Occurred();
9110  if (exc_type) {
9111  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
9112  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9113  }
9114  break;
9115  }
9116  __Pyx_GOTREF(__pyx_t_1);
9117  }
9118  __Pyx_XDECREF_SET(__pyx_v_Y, __pyx_t_1);
9119  __pyx_t_1 = 0;
9120 
9121  /* "WaveTools.pyx":391
9122  * ii =0.
9123  * for Y in self.Ycoeff:
9124  * ii+=1 # <<<<<<<<<<<<<<
9125  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,self.phi0,Y)
9126  * return HH/self.k
9127  */
9128  __pyx_v_ii = (__pyx_v_ii + 1.0);
9129 
9130  /* "WaveTools.pyx":392
9131  * for Y in self.Ycoeff:
9132  * ii+=1
9133  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,self.phi0,Y) # <<<<<<<<<<<<<<
9134  * return HH/self.k
9135  *
9136  */
9137  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9138  __Pyx_GOTREF(__pyx_t_11);
9139  __pyx_t_8 = PyFloat_FromDouble(__pyx_v_ii); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9140  __Pyx_GOTREF(__pyx_t_8);
9141  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9142  __Pyx_GOTREF(__pyx_t_7);
9143  __pyx_t_6 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9144  __Pyx_GOTREF(__pyx_t_6);
9145  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9146  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9147  __pyx_t_7 = PyFloat_FromDouble(__pyx_v_ii); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9148  __Pyx_GOTREF(__pyx_t_7);
9149  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9150  __Pyx_GOTREF(__pyx_t_8);
9151  __pyx_t_5 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9152  __Pyx_GOTREF(__pyx_t_5);
9153  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9154  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
9155  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9156  __Pyx_GOTREF(__pyx_t_8);
9157  __pyx_t_7 = NULL;
9158  __pyx_t_13 = 0;
9159  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9160  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_11);
9161  if (likely(__pyx_t_7)) {
9162  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9163  __Pyx_INCREF(__pyx_t_7);
9164  __Pyx_INCREF(function);
9165  __Pyx_DECREF_SET(__pyx_t_11, function);
9166  __pyx_t_13 = 1;
9167  }
9168  }
9169  __pyx_t_9 = PyTuple_New(6+__pyx_t_13); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9170  __Pyx_GOTREF(__pyx_t_9);
9171  if (__pyx_t_7) {
9172  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
9173  }
9174  __Pyx_INCREF(__pyx_v_x);
9175  __Pyx_GIVEREF(__pyx_v_x);
9176  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_13, __pyx_v_x);
9177  __Pyx_INCREF(__pyx_v_t);
9178  __Pyx_GIVEREF(__pyx_v_t);
9179  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_13, __pyx_v_t);
9180  __Pyx_GIVEREF(__pyx_t_6);
9181  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_13, __pyx_t_6);
9182  __Pyx_GIVEREF(__pyx_t_5);
9183  PyTuple_SET_ITEM(__pyx_t_9, 3+__pyx_t_13, __pyx_t_5);
9184  __Pyx_GIVEREF(__pyx_t_8);
9185  PyTuple_SET_ITEM(__pyx_t_9, 4+__pyx_t_13, __pyx_t_8);
9186  __Pyx_INCREF(__pyx_v_Y);
9187  __Pyx_GIVEREF(__pyx_v_Y);
9188  PyTuple_SET_ITEM(__pyx_t_9, 5+__pyx_t_13, __pyx_v_Y);
9189  __pyx_t_6 = 0;
9190  __pyx_t_5 = 0;
9191  __pyx_t_8 = 0;
9192  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9193  __Pyx_GOTREF(__pyx_t_1);
9194  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
9195  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9196  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_HH, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 392; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9197  __Pyx_GOTREF(__pyx_t_11);
9198  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9199  __Pyx_DECREF_SET(__pyx_v_HH, __pyx_t_11);
9200  __pyx_t_11 = 0;
9201 
9202  /* "WaveTools.pyx":390
9203  * HH = 0.
9204  * ii =0.
9205  * for Y in self.Ycoeff: # <<<<<<<<<<<<<<
9206  * ii+=1
9207  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,self.phi0,Y)
9208  */
9209  }
9210  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9211 
9212  /* "WaveTools.pyx":393
9213  * ii+=1
9214  * HH+=eta_mode(x,t,ii*self.kDir,ii*self.omega,self.phi0,Y)
9215  * return HH/self.k # <<<<<<<<<<<<<<
9216  *
9217  * def u(self, x, t):
9218  */
9219  __Pyx_XDECREF(__pyx_r);
9220  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9221  __Pyx_GOTREF(__pyx_t_4);
9222  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_v_HH, __pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 393; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9223  __Pyx_GOTREF(__pyx_t_11);
9224  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9225  __pyx_r = __pyx_t_11;
9226  __pyx_t_11 = 0;
9227  goto __pyx_L0;
9228 
9229  /* "WaveTools.pyx":387
9230  * if self.waveType is "Linear":
9231  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9232  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9233  * HH = 0.
9234  * ii =0.
9235  */
9236  }
9237 
9238  /* "WaveTools.pyx":384
9239  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
9240  * sys.exit(1)
9241  * def eta(self, x, t): # <<<<<<<<<<<<<<
9242  * if self.waveType is "Linear":
9243  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
9244  */
9245 
9246  /* function exit code */
9247  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9248  goto __pyx_L0;
9249  __pyx_L1_error:;
9250  __Pyx_XDECREF(__pyx_t_1);
9251  __Pyx_XDECREF(__pyx_t_4);
9252  __Pyx_XDECREF(__pyx_t_5);
9253  __Pyx_XDECREF(__pyx_t_6);
9254  __Pyx_XDECREF(__pyx_t_7);
9255  __Pyx_XDECREF(__pyx_t_8);
9256  __Pyx_XDECREF(__pyx_t_9);
9257  __Pyx_XDECREF(__pyx_t_11);
9258  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
9259  __pyx_r = NULL;
9260  __pyx_L0:;
9261  __Pyx_XDECREF(__pyx_v_HH);
9262  __Pyx_XDECREF(__pyx_v_Y);
9263  __Pyx_XGIVEREF(__pyx_r);
9264  __Pyx_RefNannyFinishContext();
9265  return __pyx_r;
9266 }
9267 
9268 /* "WaveTools.pyx":395
9269  * return HH/self.k
9270  *
9271  * def u(self, x, t): # <<<<<<<<<<<<<<
9272  * if self.waveType is "Linear":
9273  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9274  */
9275 
9276 /* Python wrapper */
9277 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9278 static char __pyx_doc_9WaveTools_18MonochromaticWaves_4u[] = "MonochromaticWaves.u(self, x, t)";
9279 static PyMethodDef __pyx_mdef_9WaveTools_18MonochromaticWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_18MonochromaticWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_18MonochromaticWaves_4u};
9280 static PyObject *__pyx_pw_9WaveTools_18MonochromaticWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9281  PyObject *__pyx_v_self = 0;
9282  PyObject *__pyx_v_x = 0;
9283  PyObject *__pyx_v_t = 0;
9284  int __pyx_lineno = 0;
9285  const char *__pyx_filename = NULL;
9286  int __pyx_clineno = 0;
9287  PyObject *__pyx_r = 0;
9288  __Pyx_RefNannyDeclarations
9289  __Pyx_RefNannySetupContext("u (wrapper)", 0);
9290  {
9291  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
9292  PyObject* values[3] = {0,0,0};
9293  if (unlikely(__pyx_kwds)) {
9294  Py_ssize_t kw_args;
9295  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9296  switch (pos_args) {
9297  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9298  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9299  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9300  case 0: break;
9301  default: goto __pyx_L5_argtuple_error;
9302  }
9303  kw_args = PyDict_Size(__pyx_kwds);
9304  switch (pos_args) {
9305  case 0:
9306  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
9307  else goto __pyx_L5_argtuple_error;
9308  case 1:
9309  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
9310  else {
9311  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9312  }
9313  case 2:
9314  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
9315  else {
9316  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9317  }
9318  }
9319  if (unlikely(kw_args > 0)) {
9320  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9321  }
9322  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
9323  goto __pyx_L5_argtuple_error;
9324  } else {
9325  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9326  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9327  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9328  }
9329  __pyx_v_self = values[0];
9330  __pyx_v_x = values[1];
9331  __pyx_v_t = values[2];
9332  }
9333  goto __pyx_L4_argument_unpacking_done;
9334  __pyx_L5_argtuple_error:;
9335  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9336  __pyx_L3_error:;
9337  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
9338  __Pyx_RefNannyFinishContext();
9339  return NULL;
9340  __pyx_L4_argument_unpacking_done:;
9341  __pyx_r = __pyx_pf_9WaveTools_18MonochromaticWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
9342 
9343  /* function exit code */
9344  __Pyx_RefNannyFinishContext();
9345  return __pyx_r;
9346 }
9347 
9348 static PyObject *__pyx_pf_9WaveTools_18MonochromaticWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
9349  PyObject *__pyx_v_Ufenton = NULL;
9350  PyObject *__pyx_v_ii = NULL;
9351  PyObject *__pyx_v_B = NULL;
9352  PyObject *__pyx_v_wmode = NULL;
9353  PyObject *__pyx_v_kmode = NULL;
9354  PyObject *__pyx_v_kdir = NULL;
9355  PyObject *__pyx_v_amp = NULL;
9356  PyObject *__pyx_r = NULL;
9357  __Pyx_RefNannyDeclarations
9358  PyObject *__pyx_t_1 = NULL;
9359  int __pyx_t_2;
9360  int __pyx_t_3;
9361  PyObject *__pyx_t_4 = NULL;
9362  PyObject *__pyx_t_5 = NULL;
9363  PyObject *__pyx_t_6 = NULL;
9364  PyObject *__pyx_t_7 = NULL;
9365  PyObject *__pyx_t_8 = NULL;
9366  PyObject *__pyx_t_9 = NULL;
9367  PyObject *__pyx_t_10 = NULL;
9368  PyObject *__pyx_t_11 = NULL;
9369  PyObject *__pyx_t_12 = NULL;
9370  PyObject *__pyx_t_13 = NULL;
9371  PyObject *__pyx_t_14 = NULL;
9372  Py_ssize_t __pyx_t_15;
9373  PyObject *__pyx_t_16 = NULL;
9374  PyObject *(*__pyx_t_17)(PyObject *);
9375  Py_ssize_t __pyx_t_18;
9376  int __pyx_lineno = 0;
9377  const char *__pyx_filename = NULL;
9378  int __pyx_clineno = 0;
9379  __Pyx_RefNannySetupContext("u", 0);
9380 
9381  /* "WaveTools.pyx":396
9382  *
9383  * def u(self, x, t):
9384  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9385  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9386  * elif self.waveType is "Fenton":
9387  */
9388  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9389  __Pyx_GOTREF(__pyx_t_1);
9390  __pyx_t_2 = (__pyx_t_1 == __pyx_n_s_Linear);
9391  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9392  __pyx_t_3 = (__pyx_t_2 != 0);
9393  if (__pyx_t_3) {
9394 
9395  /* "WaveTools.pyx":397
9396  * def u(self, x, t):
9397  * if self.waveType is "Linear":
9398  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
9399  * elif self.waveType is "Fenton":
9400  * Ufenton = self.meanVelocity
9401  */
9402  __Pyx_XDECREF(__pyx_r);
9403  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9404  __Pyx_GOTREF(__pyx_t_4);
9405  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9406  __Pyx_GOTREF(__pyx_t_5);
9407  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9408  __Pyx_GOTREF(__pyx_t_6);
9409  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9410  __Pyx_GOTREF(__pyx_t_7);
9411  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9412  __Pyx_GOTREF(__pyx_t_8);
9413  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_amplitude); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9414  __Pyx_GOTREF(__pyx_t_9);
9415  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9416  __Pyx_GOTREF(__pyx_t_10);
9417  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9418  __Pyx_GOTREF(__pyx_t_11);
9419  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9420  __Pyx_GOTREF(__pyx_t_12);
9421  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9422  __Pyx_GOTREF(__pyx_t_13);
9423  __pyx_t_14 = NULL;
9424  __pyx_t_15 = 0;
9425  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
9426  __pyx_t_14 = PyMethod_GET_SELF(__pyx_t_4);
9427  if (likely(__pyx_t_14)) {
9428  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
9429  __Pyx_INCREF(__pyx_t_14);
9430  __Pyx_INCREF(function);
9431  __Pyx_DECREF_SET(__pyx_t_4, function);
9432  __pyx_t_15 = 1;
9433  }
9434  }
9435  __pyx_t_16 = PyTuple_New(11+__pyx_t_15); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9436  __Pyx_GOTREF(__pyx_t_16);
9437  if (__pyx_t_14) {
9438  __Pyx_GIVEREF(__pyx_t_14); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_14); __pyx_t_14 = NULL;
9439  }
9440  __Pyx_INCREF(__pyx_v_x);
9441  __Pyx_GIVEREF(__pyx_v_x);
9442  PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_15, __pyx_v_x);
9443  __Pyx_INCREF(__pyx_v_t);
9444  __Pyx_GIVEREF(__pyx_v_t);
9445  PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_15, __pyx_v_t);
9446  __Pyx_GIVEREF(__pyx_t_5);
9447  PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_15, __pyx_t_5);
9448  __Pyx_GIVEREF(__pyx_t_6);
9449  PyTuple_SET_ITEM(__pyx_t_16, 3+__pyx_t_15, __pyx_t_6);
9450  __Pyx_GIVEREF(__pyx_t_7);
9451  PyTuple_SET_ITEM(__pyx_t_16, 4+__pyx_t_15, __pyx_t_7);
9452  __Pyx_GIVEREF(__pyx_t_8);
9453  PyTuple_SET_ITEM(__pyx_t_16, 5+__pyx_t_15, __pyx_t_8);
9454  __Pyx_GIVEREF(__pyx_t_9);
9455  PyTuple_SET_ITEM(__pyx_t_16, 6+__pyx_t_15, __pyx_t_9);
9456  __Pyx_GIVEREF(__pyx_t_10);
9457  PyTuple_SET_ITEM(__pyx_t_16, 7+__pyx_t_15, __pyx_t_10);
9458  __Pyx_GIVEREF(__pyx_t_11);
9459  PyTuple_SET_ITEM(__pyx_t_16, 8+__pyx_t_15, __pyx_t_11);
9460  __Pyx_GIVEREF(__pyx_t_12);
9461  PyTuple_SET_ITEM(__pyx_t_16, 9+__pyx_t_15, __pyx_t_12);
9462  __Pyx_GIVEREF(__pyx_t_13);
9463  PyTuple_SET_ITEM(__pyx_t_16, 10+__pyx_t_15, __pyx_t_13);
9464  __pyx_t_5 = 0;
9465  __pyx_t_6 = 0;
9466  __pyx_t_7 = 0;
9467  __pyx_t_8 = 0;
9468  __pyx_t_9 = 0;
9469  __pyx_t_10 = 0;
9470  __pyx_t_11 = 0;
9471  __pyx_t_12 = 0;
9472  __pyx_t_13 = 0;
9473  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_16, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9474  __Pyx_GOTREF(__pyx_t_1);
9475  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9476  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9477  __pyx_r = __pyx_t_1;
9478  __pyx_t_1 = 0;
9479  goto __pyx_L0;
9480 
9481  /* "WaveTools.pyx":396
9482  *
9483  * def u(self, x, t):
9484  * if self.waveType is "Linear": # <<<<<<<<<<<<<<
9485  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9486  * elif self.waveType is "Fenton":
9487  */
9488  }
9489 
9490  /* "WaveTools.pyx":398
9491  * if self.waveType is "Linear":
9492  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9493  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9494  * Ufenton = self.meanVelocity
9495  * ii = 0
9496  */
9497  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveType); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 398; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9498  __Pyx_GOTREF(__pyx_t_1);
9499  __pyx_t_3 = (__pyx_t_1 == __pyx_n_s_Fenton);
9500  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9501  __pyx_t_2 = (__pyx_t_3 != 0);
9502  if (__pyx_t_2) {
9503 
9504  /* "WaveTools.pyx":399
9505  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9506  * elif self.waveType is "Fenton":
9507  * Ufenton = self.meanVelocity # <<<<<<<<<<<<<<
9508  * ii = 0
9509  * for B in self.Bcoeff:
9510  */
9511  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_meanVelocity); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9512  __Pyx_GOTREF(__pyx_t_1);
9513  __pyx_v_Ufenton = __pyx_t_1;
9514  __pyx_t_1 = 0;
9515 
9516  /* "WaveTools.pyx":400
9517  * elif self.waveType is "Fenton":
9518  * Ufenton = self.meanVelocity
9519  * ii = 0 # <<<<<<<<<<<<<<
9520  * for B in self.Bcoeff:
9521  * ii+=1
9522  */
9523  __Pyx_INCREF(__pyx_int_0);
9524  __pyx_v_ii = __pyx_int_0;
9525 
9526  /* "WaveTools.pyx":401
9527  * Ufenton = self.meanVelocity
9528  * ii = 0
9529  * for B in self.Bcoeff: # <<<<<<<<<<<<<<
9530  * ii+=1
9531  * wmode = ii*self.omega
9532  */
9533  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Bcoeff); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9534  __Pyx_GOTREF(__pyx_t_1);
9535  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
9536  __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4); __pyx_t_15 = 0;
9537  __pyx_t_17 = NULL;
9538  } else {
9539  __pyx_t_15 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9540  __Pyx_GOTREF(__pyx_t_4);
9541  __pyx_t_17 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9542  }
9543  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9544  for (;;) {
9545  if (likely(!__pyx_t_17)) {
9546  if (likely(PyList_CheckExact(__pyx_t_4))) {
9547  if (__pyx_t_15 >= PyList_GET_SIZE(__pyx_t_4)) break;
9548  #if CYTHON_COMPILING_IN_CPYTHON
9549  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9550  #else
9551  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9552  __Pyx_GOTREF(__pyx_t_1);
9553  #endif
9554  } else {
9555  if (__pyx_t_15 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
9556  #if CYTHON_COMPILING_IN_CPYTHON
9557  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_15); __Pyx_INCREF(__pyx_t_1); __pyx_t_15++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9558  #else
9559  __pyx_t_1 = PySequence_ITEM(__pyx_t_4, __pyx_t_15); __pyx_t_15++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9560  __Pyx_GOTREF(__pyx_t_1);
9561  #endif
9562  }
9563  } else {
9564  __pyx_t_1 = __pyx_t_17(__pyx_t_4);
9565  if (unlikely(!__pyx_t_1)) {
9566  PyObject* exc_type = PyErr_Occurred();
9567  if (exc_type) {
9568  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
9569  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9570  }
9571  break;
9572  }
9573  __Pyx_GOTREF(__pyx_t_1);
9574  }
9575  __Pyx_XDECREF_SET(__pyx_v_B, __pyx_t_1);
9576  __pyx_t_1 = 0;
9577 
9578  /* "WaveTools.pyx":402
9579  * ii = 0
9580  * for B in self.Bcoeff:
9581  * ii+=1 # <<<<<<<<<<<<<<
9582  * wmode = ii*self.omega
9583  * kmode = ii*self.k
9584  */
9585  __pyx_t_1 = __Pyx_PyInt_AddObjC(__pyx_v_ii, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 402; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9586  __Pyx_GOTREF(__pyx_t_1);
9587  __Pyx_DECREF_SET(__pyx_v_ii, __pyx_t_1);
9588  __pyx_t_1 = 0;
9589 
9590  /* "WaveTools.pyx":403
9591  * for B in self.Bcoeff:
9592  * ii+=1
9593  * wmode = ii*self.omega # <<<<<<<<<<<<<<
9594  * kmode = ii*self.k
9595  * kdir = self.waveDir*kmode
9596  */
9597  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9598  __Pyx_GOTREF(__pyx_t_1);
9599  __pyx_t_16 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9600  __Pyx_GOTREF(__pyx_t_16);
9601  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9602  __Pyx_XDECREF_SET(__pyx_v_wmode, __pyx_t_16);
9603  __pyx_t_16 = 0;
9604 
9605  /* "WaveTools.pyx":404
9606  * ii+=1
9607  * wmode = ii*self.omega
9608  * kmode = ii*self.k # <<<<<<<<<<<<<<
9609  * kdir = self.waveDir*kmode
9610  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9611  */
9612  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9613  __Pyx_GOTREF(__pyx_t_16);
9614  __pyx_t_1 = PyNumber_Multiply(__pyx_v_ii, __pyx_t_16); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9615  __Pyx_GOTREF(__pyx_t_1);
9616  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9617  __Pyx_XDECREF_SET(__pyx_v_kmode, __pyx_t_1);
9618  __pyx_t_1 = 0;
9619 
9620  /* "WaveTools.pyx":405
9621  * wmode = ii*self.omega
9622  * kmode = ii*self.k
9623  * kdir = self.waveDir*kmode # <<<<<<<<<<<<<<
9624  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9625  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9626  */
9627  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9628  __Pyx_GOTREF(__pyx_t_1);
9629  __pyx_t_16 = PyNumber_Multiply(__pyx_t_1, __pyx_v_kmode); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9630  __Pyx_GOTREF(__pyx_t_16);
9631  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9632  __Pyx_XDECREF_SET(__pyx_v_kdir, __pyx_t_16);
9633  __pyx_t_16 = 0;
9634 
9635  /* "WaveTools.pyx":406
9636  * kmode = ii*self.k
9637  * kdir = self.waveDir*kmode
9638  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega # <<<<<<<<<<<<<<
9639  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9640  * return Ufenton # + self.meanVelocity[comp]
9641  */
9642  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9643  __Pyx_GOTREF(__pyx_t_1);
9644  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9645  __Pyx_GOTREF(__pyx_t_13);
9646  __pyx_t_12 = PyNumber_Multiply(__pyx_v_kmode, __pyx_t_13); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9647  __Pyx_GOTREF(__pyx_t_12);
9648  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9649  __pyx_t_13 = NULL;
9650  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
9651  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_1);
9652  if (likely(__pyx_t_13)) {
9653  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
9654  __Pyx_INCREF(__pyx_t_13);
9655  __Pyx_INCREF(function);
9656  __Pyx_DECREF_SET(__pyx_t_1, function);
9657  }
9658  }
9659  if (!__pyx_t_13) {
9660  __pyx_t_16 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_12); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9661  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9662  __Pyx_GOTREF(__pyx_t_16);
9663  } else {
9664  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9665  __Pyx_GOTREF(__pyx_t_11);
9666  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_13); __pyx_t_13 = NULL;
9667  __Pyx_GIVEREF(__pyx_t_12);
9668  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_12);
9669  __pyx_t_12 = 0;
9670  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_11, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9671  __Pyx_GOTREF(__pyx_t_16);
9672  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9673  }
9674  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9675  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9676  __Pyx_GOTREF(__pyx_t_11);
9677  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9678  __Pyx_GOTREF(__pyx_t_12);
9679  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_k); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9680  __Pyx_GOTREF(__pyx_t_13);
9681  __pyx_t_10 = __Pyx_PyNumber_Divide(__pyx_t_12, __pyx_t_13); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9682  __Pyx_GOTREF(__pyx_t_10);
9683  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9684  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
9685  __pyx_t_13 = NULL;
9686  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9687  __pyx_t_13 = PyMethod_GET_SELF(__pyx_t_11);
9688  if (likely(__pyx_t_13)) {
9689  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9690  __Pyx_INCREF(__pyx_t_13);
9691  __Pyx_INCREF(function);
9692  __Pyx_DECREF_SET(__pyx_t_11, function);
9693  }
9694  }
9695  if (!__pyx_t_13) {
9696  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9697  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
9698  __Pyx_GOTREF(__pyx_t_1);
9699  } else {
9700  __pyx_t_12 = PyTuple_New(1+1); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9701  __Pyx_GOTREF(__pyx_t_12);
9702  __Pyx_GIVEREF(__pyx_t_13); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_13); __pyx_t_13 = NULL;
9703  __Pyx_GIVEREF(__pyx_t_10);
9704  PyTuple_SET_ITEM(__pyx_t_12, 0+1, __pyx_t_10);
9705  __pyx_t_10 = 0;
9706  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9707  __Pyx_GOTREF(__pyx_t_1);
9708  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
9709  }
9710  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9711  __pyx_t_11 = PyNumber_Multiply(__pyx_t_16, __pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9712  __Pyx_GOTREF(__pyx_t_11);
9713  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9714  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9715  __pyx_t_1 = PyNumber_Multiply(__pyx_t_11, __pyx_v_B); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9716  __Pyx_GOTREF(__pyx_t_1);
9717  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9718  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9719  __Pyx_GOTREF(__pyx_t_11);
9720  __pyx_t_16 = __Pyx_PyNumber_Divide(__pyx_t_1, __pyx_t_11); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9721  __Pyx_GOTREF(__pyx_t_16);
9722  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
9723  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9724  __Pyx_XDECREF_SET(__pyx_v_amp, __pyx_t_16);
9725  __pyx_t_16 = 0;
9726 
9727  /* "WaveTools.pyx":407
9728  * kdir = self.waveDir*kmode
9729  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9730  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,self.phi0,amp,self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
9731  * return Ufenton # + self.meanVelocity[comp]
9732  *
9733  */
9734  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9735  __Pyx_GOTREF(__pyx_t_11);
9736  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9737  __Pyx_GOTREF(__pyx_t_1);
9738  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9739  __Pyx_GOTREF(__pyx_t_12);
9740  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9741  __Pyx_GOTREF(__pyx_t_10);
9742  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9743  __Pyx_GOTREF(__pyx_t_13);
9744  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9745  __Pyx_GOTREF(__pyx_t_9);
9746  __pyx_t_8 = NULL;
9747  __pyx_t_18 = 0;
9748  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
9749  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_11);
9750  if (likely(__pyx_t_8)) {
9751  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
9752  __Pyx_INCREF(__pyx_t_8);
9753  __Pyx_INCREF(function);
9754  __Pyx_DECREF_SET(__pyx_t_11, function);
9755  __pyx_t_18 = 1;
9756  }
9757  }
9758  __pyx_t_7 = PyTuple_New(11+__pyx_t_18); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9759  __Pyx_GOTREF(__pyx_t_7);
9760  if (__pyx_t_8) {
9761  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
9762  }
9763  __Pyx_INCREF(__pyx_v_x);
9764  __Pyx_GIVEREF(__pyx_v_x);
9765  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_18, __pyx_v_x);
9766  __Pyx_INCREF(__pyx_v_t);
9767  __Pyx_GIVEREF(__pyx_v_t);
9768  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_18, __pyx_v_t);
9769  __Pyx_INCREF(__pyx_v_kdir);
9770  __Pyx_GIVEREF(__pyx_v_kdir);
9771  PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_18, __pyx_v_kdir);
9772  __Pyx_INCREF(__pyx_v_kmode);
9773  __Pyx_GIVEREF(__pyx_v_kmode);
9774  PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_18, __pyx_v_kmode);
9775  __Pyx_INCREF(__pyx_v_wmode);
9776  __Pyx_GIVEREF(__pyx_v_wmode);
9777  PyTuple_SET_ITEM(__pyx_t_7, 4+__pyx_t_18, __pyx_v_wmode);
9778  __Pyx_GIVEREF(__pyx_t_1);
9779  PyTuple_SET_ITEM(__pyx_t_7, 5+__pyx_t_18, __pyx_t_1);
9780  __Pyx_INCREF(__pyx_v_amp);
9781  __Pyx_GIVEREF(__pyx_v_amp);
9782  PyTuple_SET_ITEM(__pyx_t_7, 6+__pyx_t_18, __pyx_v_amp);
9783  __Pyx_GIVEREF(__pyx_t_12);
9784  PyTuple_SET_ITEM(__pyx_t_7, 7+__pyx_t_18, __pyx_t_12);
9785  __Pyx_GIVEREF(__pyx_t_10);
9786  PyTuple_SET_ITEM(__pyx_t_7, 8+__pyx_t_18, __pyx_t_10);
9787  __Pyx_GIVEREF(__pyx_t_13);
9788  PyTuple_SET_ITEM(__pyx_t_7, 9+__pyx_t_18, __pyx_t_13);
9789  __Pyx_GIVEREF(__pyx_t_9);
9790  PyTuple_SET_ITEM(__pyx_t_7, 10+__pyx_t_18, __pyx_t_9);
9791  __pyx_t_1 = 0;
9792  __pyx_t_12 = 0;
9793  __pyx_t_10 = 0;
9794  __pyx_t_13 = 0;
9795  __pyx_t_9 = 0;
9796  __pyx_t_16 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9797  __Pyx_GOTREF(__pyx_t_16);
9798  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
9799  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
9800  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_Ufenton, __pyx_t_16); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
9801  __Pyx_GOTREF(__pyx_t_11);
9802  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
9803  __Pyx_DECREF_SET(__pyx_v_Ufenton, __pyx_t_11);
9804  __pyx_t_11 = 0;
9805 
9806  /* "WaveTools.pyx":401
9807  * Ufenton = self.meanVelocity
9808  * ii = 0
9809  * for B in self.Bcoeff: # <<<<<<<<<<<<<<
9810  * ii+=1
9811  * wmode = ii*self.omega
9812  */
9813  }
9814  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
9815 
9816  /* "WaveTools.pyx":408
9817  * amp = tanh(kmode*self.depth)*sqrt(self.gAbs/self.k)*B/self.omega
9818  * Ufenton+= vel_mode(x,t,kdir,kmode,wmode,self.phi0,amp,self.mwl,self.depth,self.g,self.vDir)
9819  * return Ufenton # + self.meanVelocity[comp] # <<<<<<<<<<<<<<
9820  *
9821  *
9822  */
9823  __Pyx_XDECREF(__pyx_r);
9824  __Pyx_INCREF(__pyx_v_Ufenton);
9825  __pyx_r = __pyx_v_Ufenton;
9826  goto __pyx_L0;
9827 
9828  /* "WaveTools.pyx":398
9829  * if self.waveType is "Linear":
9830  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9831  * elif self.waveType is "Fenton": # <<<<<<<<<<<<<<
9832  * Ufenton = self.meanVelocity
9833  * ii = 0
9834  */
9835  }
9836 
9837  /* "WaveTools.pyx":395
9838  * return HH/self.k
9839  *
9840  * def u(self, x, t): # <<<<<<<<<<<<<<
9841  * if self.waveType is "Linear":
9842  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
9843  */
9844 
9845  /* function exit code */
9846  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
9847  goto __pyx_L0;
9848  __pyx_L1_error:;
9849  __Pyx_XDECREF(__pyx_t_1);
9850  __Pyx_XDECREF(__pyx_t_4);
9851  __Pyx_XDECREF(__pyx_t_5);
9852  __Pyx_XDECREF(__pyx_t_6);
9853  __Pyx_XDECREF(__pyx_t_7);
9854  __Pyx_XDECREF(__pyx_t_8);
9855  __Pyx_XDECREF(__pyx_t_9);
9856  __Pyx_XDECREF(__pyx_t_10);
9857  __Pyx_XDECREF(__pyx_t_11);
9858  __Pyx_XDECREF(__pyx_t_12);
9859  __Pyx_XDECREF(__pyx_t_13);
9860  __Pyx_XDECREF(__pyx_t_14);
9861  __Pyx_XDECREF(__pyx_t_16);
9862  __Pyx_AddTraceback("WaveTools.MonochromaticWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
9863  __pyx_r = NULL;
9864  __pyx_L0:;
9865  __Pyx_XDECREF(__pyx_v_Ufenton);
9866  __Pyx_XDECREF(__pyx_v_ii);
9867  __Pyx_XDECREF(__pyx_v_B);
9868  __Pyx_XDECREF(__pyx_v_wmode);
9869  __Pyx_XDECREF(__pyx_v_kmode);
9870  __Pyx_XDECREF(__pyx_v_kdir);
9871  __Pyx_XDECREF(__pyx_v_amp);
9872  __Pyx_XGIVEREF(__pyx_r);
9873  __Pyx_RefNannyFinishContext();
9874  return __pyx_r;
9875 }
9876 
9877 /* "WaveTools.pyx":426
9878  * """
9879  *
9880  * def __init__(self, # <<<<<<<<<<<<<<
9881  * Tp,
9882  * Hs,
9883  */
9884 
9885 /* Python wrapper */
9886 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
9887 static char __pyx_doc_9WaveTools_11RandomWaves___init__[] = "RandomWaves.__init__(self, Tp, Hs, mwl, depth, waveDir, g, N, bandFactor, spectName, spectral_params=None, phi=None)";
9888 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves___init__};
9889 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
9890  PyObject *__pyx_v_self = 0;
9891  PyObject *__pyx_v_Tp = 0;
9892  PyObject *__pyx_v_Hs = 0;
9893  PyObject *__pyx_v_mwl = 0;
9894  PyObject *__pyx_v_depth = 0;
9895  PyObject *__pyx_v_waveDir = 0;
9896  PyObject *__pyx_v_g = 0;
9897  PyObject *__pyx_v_N = 0;
9898  PyObject *__pyx_v_bandFactor = 0;
9899  PyObject *__pyx_v_spectName = 0;
9900  PyObject *__pyx_v_spectral_params = 0;
9901  PyObject *__pyx_v_phi = 0;
9902  int __pyx_lineno = 0;
9903  const char *__pyx_filename = NULL;
9904  int __pyx_clineno = 0;
9905  PyObject *__pyx_r = 0;
9906  __Pyx_RefNannyDeclarations
9907  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
9908  {
9909  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,0};
9910  PyObject* values[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
9911 
9912  /* "WaveTools.pyx":436
9913  * bandFactor, #accelerationof gravity
9914  * spectName ,# random words will result in error and return the available spectra
9915  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
9916  * phi=None
9917  * ):
9918  */
9919  values[10] = ((PyObject *)((PyObject *)Py_None));
9920 
9921  /* "WaveTools.pyx":437
9922  * spectName ,# random words will result in error and return the available spectra
9923  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
9924  * phi=None # <<<<<<<<<<<<<<
9925  * ):
9926  * validSpectra = [JONSWAP,PM_mod]
9927  */
9928  values[11] = ((PyObject *)((PyObject *)Py_None));
9929  if (unlikely(__pyx_kwds)) {
9930  Py_ssize_t kw_args;
9931  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
9932  switch (pos_args) {
9933  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
9934  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
9935  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
9936  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
9937  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
9938  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
9939  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
9940  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
9941  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
9942  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
9943  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
9944  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
9945  case 0: break;
9946  default: goto __pyx_L5_argtuple_error;
9947  }
9948  kw_args = PyDict_Size(__pyx_kwds);
9949  switch (pos_args) {
9950  case 0:
9951  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
9952  else goto __pyx_L5_argtuple_error;
9953  case 1:
9954  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
9955  else {
9956  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9957  }
9958  case 2:
9959  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
9960  else {
9961  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9962  }
9963  case 3:
9964  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
9965  else {
9966  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9967  }
9968  case 4:
9969  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
9970  else {
9971  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9972  }
9973  case 5:
9974  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
9975  else {
9976  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9977  }
9978  case 6:
9979  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
9980  else {
9981  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9982  }
9983  case 7:
9984  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
9985  else {
9986  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9987  }
9988  case 8:
9989  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
9990  else {
9991  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9992  }
9993  case 9:
9994  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
9995  else {
9996  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
9997  }
9998  case 10:
9999  if (kw_args > 0) {
10000  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params);
10001  if (value) { values[10] = value; kw_args--; }
10002  }
10003  case 11:
10004  if (kw_args > 0) {
10005  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi);
10006  if (value) { values[11] = value; kw_args--; }
10007  }
10008  }
10009  if (unlikely(kw_args > 0)) {
10010  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10011  }
10012  } else {
10013  switch (PyTuple_GET_SIZE(__pyx_args)) {
10014  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
10015  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
10016  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
10017  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
10018  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
10019  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
10020  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
10021  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
10022  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
10023  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
10024  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
10025  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
10026  break;
10027  default: goto __pyx_L5_argtuple_error;
10028  }
10029  }
10030  __pyx_v_self = values[0];
10031  __pyx_v_Tp = values[1];
10032  __pyx_v_Hs = values[2];
10033  __pyx_v_mwl = values[3];
10034  __pyx_v_depth = values[4];
10035  __pyx_v_waveDir = values[5];
10036  __pyx_v_g = values[6];
10037  __pyx_v_N = values[7];
10038  __pyx_v_bandFactor = values[8];
10039  __pyx_v_spectName = values[9];
10040  __pyx_v_spectral_params = values[10];
10041  __pyx_v_phi = values[11];
10042  }
10043  goto __pyx_L4_argument_unpacking_done;
10044  __pyx_L5_argtuple_error:;
10045  __Pyx_RaiseArgtupleInvalid("__init__", 0, 10, 12, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
10046  __pyx_L3_error:;
10047  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10048  __Pyx_RefNannyFinishContext();
10049  return NULL;
10050  __pyx_L4_argument_unpacking_done:;
10051  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi);
10052 
10053  /* "WaveTools.pyx":426
10054  * """
10055  *
10056  * def __init__(self, # <<<<<<<<<<<<<<
10057  * Tp,
10058  * Hs,
10059  */
10060 
10061  /* function exit code */
10062  __Pyx_RefNannyFinishContext();
10063  return __pyx_r;
10064 }
10065 
10066 static PyObject *__pyx_pf_9WaveTools_11RandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi) {
10067  PyObject *__pyx_v_validSpectra = NULL;
10068  PyObject *__pyx_v_spec_fun = NULL;
10069  long __pyx_v_ii;
10070  PyObject *__pyx_r = NULL;
10071  __Pyx_RefNannyDeclarations
10072  PyObject *__pyx_t_1 = NULL;
10073  PyObject *__pyx_t_2 = NULL;
10074  PyObject *__pyx_t_3 = NULL;
10075  Py_ssize_t __pyx_t_4;
10076  PyObject *__pyx_t_5 = NULL;
10077  PyObject *__pyx_t_6 = NULL;
10078  PyObject *__pyx_t_7 = NULL;
10079  double __pyx_t_8;
10080  PyObject *__pyx_t_9 = NULL;
10081  int __pyx_t_10;
10082  PyObject *__pyx_t_11 = NULL;
10083  PyObject *__pyx_t_12 = NULL;
10084  PyObject *__pyx_t_13 = NULL;
10085  PyObject *__pyx_t_14 = NULL;
10086  long __pyx_t_15;
10087  int __pyx_lineno = 0;
10088  const char *__pyx_filename = NULL;
10089  int __pyx_clineno = 0;
10090  __Pyx_RefNannySetupContext("__init__", 0);
10091 
10092  /* "WaveTools.pyx":439
10093  * phi=None
10094  * ):
10095  * validSpectra = [JONSWAP,PM_mod] # <<<<<<<<<<<<<<
10096  * spec_fun =loadExistingFunction(spectName, validSpectra)
10097  * self.g = np.array(g)
10098  */
10099  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_JONSWAP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10100  __Pyx_GOTREF(__pyx_t_1);
10101  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_PM_mod); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10102  __Pyx_GOTREF(__pyx_t_2);
10103  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 439; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10104  __Pyx_GOTREF(__pyx_t_3);
10105  __Pyx_GIVEREF(__pyx_t_1);
10106  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
10107  __Pyx_GIVEREF(__pyx_t_2);
10108  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
10109  __pyx_t_1 = 0;
10110  __pyx_t_2 = 0;
10111  __pyx_v_validSpectra = ((PyObject*)__pyx_t_3);
10112  __pyx_t_3 = 0;
10113 
10114  /* "WaveTools.pyx":440
10115  * ):
10116  * validSpectra = [JONSWAP,PM_mod]
10117  * spec_fun =loadExistingFunction(spectName, validSpectra) # <<<<<<<<<<<<<<
10118  * self.g = np.array(g)
10119  * self.waveDir = setDirVector(np.array(waveDir))
10120  */
10121  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10122  __Pyx_GOTREF(__pyx_t_2);
10123  __pyx_t_1 = NULL;
10124  __pyx_t_4 = 0;
10125  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
10126  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
10127  if (likely(__pyx_t_1)) {
10128  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
10129  __Pyx_INCREF(__pyx_t_1);
10130  __Pyx_INCREF(function);
10131  __Pyx_DECREF_SET(__pyx_t_2, function);
10132  __pyx_t_4 = 1;
10133  }
10134  }
10135  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10136  __Pyx_GOTREF(__pyx_t_5);
10137  if (__pyx_t_1) {
10138  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
10139  }
10140  __Pyx_INCREF(__pyx_v_spectName);
10141  __Pyx_GIVEREF(__pyx_v_spectName);
10142  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_spectName);
10143  __Pyx_INCREF(__pyx_v_validSpectra);
10144  __Pyx_GIVEREF(__pyx_v_validSpectra);
10145  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_validSpectra);
10146  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10147  __Pyx_GOTREF(__pyx_t_3);
10148  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10149  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10150  __pyx_v_spec_fun = __pyx_t_3;
10151  __pyx_t_3 = 0;
10152 
10153  /* "WaveTools.pyx":441
10154  * validSpectra = [JONSWAP,PM_mod]
10155  * spec_fun =loadExistingFunction(spectName, validSpectra)
10156  * self.g = np.array(g) # <<<<<<<<<<<<<<
10157  * self.waveDir = setDirVector(np.array(waveDir))
10158  * self.vDir = setVertDir(g)
10159  */
10160  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10161  __Pyx_GOTREF(__pyx_t_2);
10162  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10163  __Pyx_GOTREF(__pyx_t_5);
10164  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10165  __pyx_t_2 = NULL;
10166  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10167  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_5);
10168  if (likely(__pyx_t_2)) {
10169  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10170  __Pyx_INCREF(__pyx_t_2);
10171  __Pyx_INCREF(function);
10172  __Pyx_DECREF_SET(__pyx_t_5, function);
10173  }
10174  }
10175  if (!__pyx_t_2) {
10176  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10177  __Pyx_GOTREF(__pyx_t_3);
10178  } else {
10179  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10180  __Pyx_GOTREF(__pyx_t_1);
10181  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
10182  __Pyx_INCREF(__pyx_v_g);
10183  __Pyx_GIVEREF(__pyx_v_g);
10184  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_g);
10185  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10186  __Pyx_GOTREF(__pyx_t_3);
10187  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10188  }
10189  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10190  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 441; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10191  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10192 
10193  /* "WaveTools.pyx":442
10194  * spec_fun =loadExistingFunction(spectName, validSpectra)
10195  * self.g = np.array(g)
10196  * self.waveDir = setDirVector(np.array(waveDir)) # <<<<<<<<<<<<<<
10197  * self.vDir = setVertDir(g)
10198  * dirCheck(self.waveDir,self.vDir)
10199  */
10200  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10201  __Pyx_GOTREF(__pyx_t_5);
10202  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10203  __Pyx_GOTREF(__pyx_t_2);
10204  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10205  __Pyx_GOTREF(__pyx_t_6);
10206  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10207  __pyx_t_2 = NULL;
10208  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10209  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10210  if (likely(__pyx_t_2)) {
10211  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10212  __Pyx_INCREF(__pyx_t_2);
10213  __Pyx_INCREF(function);
10214  __Pyx_DECREF_SET(__pyx_t_6, function);
10215  }
10216  }
10217  if (!__pyx_t_2) {
10218  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10219  __Pyx_GOTREF(__pyx_t_1);
10220  } else {
10221  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10222  __Pyx_GOTREF(__pyx_t_7);
10223  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2); __pyx_t_2 = NULL;
10224  __Pyx_INCREF(__pyx_v_waveDir);
10225  __Pyx_GIVEREF(__pyx_v_waveDir);
10226  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_waveDir);
10227  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10228  __Pyx_GOTREF(__pyx_t_1);
10229  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10230  }
10231  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10232  __pyx_t_6 = NULL;
10233  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10234  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
10235  if (likely(__pyx_t_6)) {
10236  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10237  __Pyx_INCREF(__pyx_t_6);
10238  __Pyx_INCREF(function);
10239  __Pyx_DECREF_SET(__pyx_t_5, function);
10240  }
10241  }
10242  if (!__pyx_t_6) {
10243  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10244  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10245  __Pyx_GOTREF(__pyx_t_3);
10246  } else {
10247  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10248  __Pyx_GOTREF(__pyx_t_7);
10249  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
10250  __Pyx_GIVEREF(__pyx_t_1);
10251  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_1);
10252  __pyx_t_1 = 0;
10253  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10254  __Pyx_GOTREF(__pyx_t_3);
10255  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10256  }
10257  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10258  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10259  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10260 
10261  /* "WaveTools.pyx":443
10262  * self.g = np.array(g)
10263  * self.waveDir = setDirVector(np.array(waveDir))
10264  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
10265  * dirCheck(self.waveDir,self.vDir)
10266  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10267  */
10268  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10269  __Pyx_GOTREF(__pyx_t_5);
10270  __pyx_t_7 = NULL;
10271  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10272  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
10273  if (likely(__pyx_t_7)) {
10274  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10275  __Pyx_INCREF(__pyx_t_7);
10276  __Pyx_INCREF(function);
10277  __Pyx_DECREF_SET(__pyx_t_5, function);
10278  }
10279  }
10280  if (!__pyx_t_7) {
10281  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10282  __Pyx_GOTREF(__pyx_t_3);
10283  } else {
10284  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10285  __Pyx_GOTREF(__pyx_t_1);
10286  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_7); __pyx_t_7 = NULL;
10287  __Pyx_INCREF(__pyx_v_g);
10288  __Pyx_GIVEREF(__pyx_v_g);
10289  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_g);
10290  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10291  __Pyx_GOTREF(__pyx_t_3);
10292  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10293  }
10294  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10295  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10296  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10297 
10298  /* "WaveTools.pyx":444
10299  * self.waveDir = setDirVector(np.array(waveDir))
10300  * self.vDir = setVertDir(g)
10301  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
10302  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10303  * self.Hs = Hs
10304  */
10305  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10306  __Pyx_GOTREF(__pyx_t_5);
10307  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10308  __Pyx_GOTREF(__pyx_t_1);
10309  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10310  __Pyx_GOTREF(__pyx_t_7);
10311  __pyx_t_6 = NULL;
10312  __pyx_t_4 = 0;
10313  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10314  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
10315  if (likely(__pyx_t_6)) {
10316  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10317  __Pyx_INCREF(__pyx_t_6);
10318  __Pyx_INCREF(function);
10319  __Pyx_DECREF_SET(__pyx_t_5, function);
10320  __pyx_t_4 = 1;
10321  }
10322  }
10323  __pyx_t_2 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10324  __Pyx_GOTREF(__pyx_t_2);
10325  if (__pyx_t_6) {
10326  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
10327  }
10328  __Pyx_GIVEREF(__pyx_t_1);
10329  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_1);
10330  __Pyx_GIVEREF(__pyx_t_7);
10331  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_7);
10332  __pyx_t_1 = 0;
10333  __pyx_t_7 = 0;
10334  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10335  __Pyx_GOTREF(__pyx_t_3);
10336  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10337  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10338  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10339 
10340  /* "WaveTools.pyx":445
10341  * self.vDir = setVertDir(g)
10342  * dirCheck(self.waveDir,self.vDir)
10343  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2]) # <<<<<<<<<<<<<<
10344  * self.Hs = Hs
10345  * self.depth = depth
10346  */
10347  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10348  __Pyx_GOTREF(__pyx_t_5);
10349  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10350  __Pyx_GOTREF(__pyx_t_2);
10351  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10352  __Pyx_GOTREF(__pyx_t_7);
10353  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10354  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10355  __Pyx_GOTREF(__pyx_t_2);
10356  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10357  __Pyx_GOTREF(__pyx_t_1);
10358  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10359  __pyx_t_2 = PyNumber_Multiply(__pyx_t_7, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10360  __Pyx_GOTREF(__pyx_t_2);
10361  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10362  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10363  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10364  __Pyx_GOTREF(__pyx_t_1);
10365  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10366  __Pyx_GOTREF(__pyx_t_7);
10367  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10368  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10369  __Pyx_GOTREF(__pyx_t_1);
10370  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_1, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10371  __Pyx_GOTREF(__pyx_t_6);
10372  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10373  __pyx_t_1 = PyNumber_Multiply(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10374  __Pyx_GOTREF(__pyx_t_1);
10375  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10376  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10377  __pyx_t_6 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10378  __Pyx_GOTREF(__pyx_t_6);
10379  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10380  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10381  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10382  __Pyx_GOTREF(__pyx_t_1);
10383  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10384  __Pyx_GOTREF(__pyx_t_2);
10385  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10386  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10387  __Pyx_GOTREF(__pyx_t_1);
10388  __pyx_t_7 = __Pyx_GetItemInt(__pyx_t_1, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10389  __Pyx_GOTREF(__pyx_t_7);
10390  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10391  __pyx_t_1 = PyNumber_Multiply(__pyx_t_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10392  __Pyx_GOTREF(__pyx_t_1);
10393  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
10394  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10395  __pyx_t_7 = PyNumber_Add(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10396  __Pyx_GOTREF(__pyx_t_7);
10397  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10398  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10399  __pyx_t_1 = NULL;
10400  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
10401  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
10402  if (likely(__pyx_t_1)) {
10403  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
10404  __Pyx_INCREF(__pyx_t_1);
10405  __Pyx_INCREF(function);
10406  __Pyx_DECREF_SET(__pyx_t_5, function);
10407  }
10408  }
10409  if (!__pyx_t_1) {
10410  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10411  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10412  __Pyx_GOTREF(__pyx_t_3);
10413  } else {
10414  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10415  __Pyx_GOTREF(__pyx_t_6);
10416  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
10417  __Pyx_GIVEREF(__pyx_t_7);
10418  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_7);
10419  __pyx_t_7 = 0;
10420  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10421  __Pyx_GOTREF(__pyx_t_3);
10422  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10423  }
10424  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10425  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10426  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10427 
10428  /* "WaveTools.pyx":446
10429  * dirCheck(self.waveDir,self.vDir)
10430  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10431  * self.Hs = Hs # <<<<<<<<<<<<<<
10432  * self.depth = depth
10433  * self.Tp = Tp
10434  */
10435  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Hs, __pyx_v_Hs) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10436 
10437  /* "WaveTools.pyx":447
10438  * self.gAbs = sqrt(self.g[0]*self.g[0]+self.g[1]*self.g[1]+self.g[2]*self.g[2])
10439  * self.Hs = Hs
10440  * self.depth = depth # <<<<<<<<<<<<<<
10441  * self.Tp = Tp
10442  * self.fp = 1./Tp
10443  */
10444  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 447; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10445 
10446  /* "WaveTools.pyx":448
10447  * self.Hs = Hs
10448  * self.depth = depth
10449  * self.Tp = Tp # <<<<<<<<<<<<<<
10450  * self.fp = 1./Tp
10451  * self.bandFactor = bandFactor
10452  */
10453  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Tp, __pyx_v_Tp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10454 
10455  /* "WaveTools.pyx":449
10456  * self.depth = depth
10457  * self.Tp = Tp
10458  * self.fp = 1./Tp # <<<<<<<<<<<<<<
10459  * self.bandFactor = bandFactor
10460  * self.N = N
10461  */
10462  __pyx_t_3 = __Pyx_PyFloat_DivideCObj(__pyx_float_1_, __pyx_v_Tp, 1., 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10463  __Pyx_GOTREF(__pyx_t_3);
10464  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fp, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10465  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10466 
10467  /* "WaveTools.pyx":450
10468  * self.Tp = Tp
10469  * self.fp = 1./Tp
10470  * self.bandFactor = bandFactor # <<<<<<<<<<<<<<
10471  * self.N = N
10472  * self.mwl = mwl
10473  */
10474  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor, __pyx_v_bandFactor) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10475 
10476  /* "WaveTools.pyx":451
10477  * self.fp = 1./Tp
10478  * self.bandFactor = bandFactor
10479  * self.N = N # <<<<<<<<<<<<<<
10480  * self.mwl = mwl
10481  * self.fmax = self.bandFactor*self.fp
10482  */
10483  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_v_N) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10484 
10485  /* "WaveTools.pyx":452
10486  * self.bandFactor = bandFactor
10487  * self.N = N
10488  * self.mwl = mwl # <<<<<<<<<<<<<<
10489  * self.fmax = self.bandFactor*self.fp
10490  * self.fmin = self.fp/self.bandFactor
10491  */
10492  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 452; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10493 
10494  /* "WaveTools.pyx":453
10495  * self.N = N
10496  * self.mwl = mwl
10497  * self.fmax = self.bandFactor*self.fp # <<<<<<<<<<<<<<
10498  * self.fmin = self.fp/self.bandFactor
10499  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10500  */
10501  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10502  __Pyx_GOTREF(__pyx_t_3);
10503  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10504  __Pyx_GOTREF(__pyx_t_5);
10505  __pyx_t_6 = PyNumber_Multiply(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10506  __Pyx_GOTREF(__pyx_t_6);
10507  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10508  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10509  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fmax, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10510  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10511 
10512  /* "WaveTools.pyx":454
10513  * self.mwl = mwl
10514  * self.fmax = self.bandFactor*self.fp
10515  * self.fmin = self.fp/self.bandFactor # <<<<<<<<<<<<<<
10516  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10517  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10518  */
10519  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10520  __Pyx_GOTREF(__pyx_t_6);
10521  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_bandFactor); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10522  __Pyx_GOTREF(__pyx_t_5);
10523  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10524  __Pyx_GOTREF(__pyx_t_3);
10525  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10526  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10527  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fmin, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 454; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10528  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10529 
10530  /* "WaveTools.pyx":455
10531  * self.fmax = self.bandFactor*self.fp
10532  * self.fmin = self.fp/self.bandFactor
10533  * self.df = (self.fmax-self.fmin)/float(self.N-1) # <<<<<<<<<<<<<<
10534  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10535  * self.omega = 2.*pi*self.fi
10536  */
10537  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmax); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10538  __Pyx_GOTREF(__pyx_t_3);
10539  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmin); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10540  __Pyx_GOTREF(__pyx_t_5);
10541  __pyx_t_6 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10542  __Pyx_GOTREF(__pyx_t_6);
10543  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10544  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10545  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10546  __Pyx_GOTREF(__pyx_t_5);
10547  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10548  __Pyx_GOTREF(__pyx_t_3);
10549  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10550  __pyx_t_8 = __Pyx_PyObject_AsDouble(__pyx_t_3); if (unlikely(__pyx_t_8 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10551  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10552  __pyx_t_3 = PyFloat_FromDouble(__pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10553  __Pyx_GOTREF(__pyx_t_3);
10554  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10555  __Pyx_GOTREF(__pyx_t_5);
10556  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10557  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10558  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_df, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10559  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10560 
10561  /* "WaveTools.pyx":456
10562  * self.fmin = self.fp/self.bandFactor
10563  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10564  * self.fi = np.linspace(self.fmin,self.fmax,self.N) # <<<<<<<<<<<<<<
10565  * self.omega = 2.*pi*self.fi
10566  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10567  */
10568  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10569  __Pyx_GOTREF(__pyx_t_3);
10570  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_linspace); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10571  __Pyx_GOTREF(__pyx_t_6);
10572  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10573  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10574  __Pyx_GOTREF(__pyx_t_3);
10575  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fmax); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10576  __Pyx_GOTREF(__pyx_t_7);
10577  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10578  __Pyx_GOTREF(__pyx_t_1);
10579  __pyx_t_2 = NULL;
10580  __pyx_t_4 = 0;
10581  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10582  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
10583  if (likely(__pyx_t_2)) {
10584  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10585  __Pyx_INCREF(__pyx_t_2);
10586  __Pyx_INCREF(function);
10587  __Pyx_DECREF_SET(__pyx_t_6, function);
10588  __pyx_t_4 = 1;
10589  }
10590  }
10591  __pyx_t_9 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10592  __Pyx_GOTREF(__pyx_t_9);
10593  if (__pyx_t_2) {
10594  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_2); __pyx_t_2 = NULL;
10595  }
10596  __Pyx_GIVEREF(__pyx_t_3);
10597  PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_4, __pyx_t_3);
10598  __Pyx_GIVEREF(__pyx_t_7);
10599  PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_4, __pyx_t_7);
10600  __Pyx_GIVEREF(__pyx_t_1);
10601  PyTuple_SET_ITEM(__pyx_t_9, 2+__pyx_t_4, __pyx_t_1);
10602  __pyx_t_3 = 0;
10603  __pyx_t_7 = 0;
10604  __pyx_t_1 = 0;
10605  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10606  __Pyx_GOTREF(__pyx_t_5);
10607  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10608  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10609  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fi, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 456; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10610  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10611 
10612  /* "WaveTools.pyx":457
10613  * self.df = (self.fmax-self.fmin)/float(self.N-1)
10614  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10615  * self.omega = 2.*pi*self.fi # <<<<<<<<<<<<<<
10616  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10617  * if phi == None:
10618  */
10619  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10620  __Pyx_GOTREF(__pyx_t_5);
10621  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10622  __Pyx_GOTREF(__pyx_t_6);
10623  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10624  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10625  __Pyx_GOTREF(__pyx_t_5);
10626  __pyx_t_9 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10627  __Pyx_GOTREF(__pyx_t_9);
10628  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10629  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10630  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10631  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10632 
10633  /* "WaveTools.pyx":458
10634  * self.fi = np.linspace(self.fmin,self.fmax,self.N)
10635  * self.omega = 2.*pi*self.fi
10636  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
10637  * if phi == None:
10638  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10639  */
10640  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10641  __Pyx_GOTREF(__pyx_t_9);
10642  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10643  __Pyx_GOTREF(__pyx_t_5);
10644  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10645  __Pyx_GOTREF(__pyx_t_6);
10646  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10647  __Pyx_GOTREF(__pyx_t_1);
10648  __Pyx_GIVEREF(__pyx_t_5);
10649  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
10650  __Pyx_GIVEREF(__pyx_t_6);
10651  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_6);
10652  __pyx_t_5 = 0;
10653  __pyx_t_6 = 0;
10654  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10655  __Pyx_GOTREF(__pyx_t_6);
10656  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10657  __Pyx_GOTREF(__pyx_t_5);
10658  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_g, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10659  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10660  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_1, __pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10661  __Pyx_GOTREF(__pyx_t_5);
10662  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10663  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10664  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10665  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ki, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 458; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10666  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10667 
10668  /* "WaveTools.pyx":459
10669  * self.omega = 2.*pi*self.fi
10670  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10671  * if phi == None: # <<<<<<<<<<<<<<
10672  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10673  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10674  */
10675  __pyx_t_5 = PyObject_RichCompare(__pyx_v_phi, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10676  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10677  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10678  if (__pyx_t_10) {
10679 
10680  /* "WaveTools.pyx":460
10681  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10682  * if phi == None:
10683  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0]) # <<<<<<<<<<<<<<
10684  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10685  * else:
10686  */
10687  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10688  __Pyx_GOTREF(__pyx_t_5);
10689  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10690  __Pyx_GOTREF(__pyx_t_6);
10691  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10692  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10693  __Pyx_GOTREF(__pyx_t_1);
10694  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_random); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10695  __Pyx_GOTREF(__pyx_t_9);
10696  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10697  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10698  __Pyx_GOTREF(__pyx_t_1);
10699  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10700  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10701  __Pyx_GOTREF(__pyx_t_9);
10702  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10703  __Pyx_GOTREF(__pyx_t_7);
10704  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10705  __pyx_t_9 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
10706  __Pyx_GOTREF(__pyx_t_9);
10707  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
10708  __pyx_t_7 = NULL;
10709  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
10710  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
10711  if (likely(__pyx_t_7)) {
10712  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
10713  __Pyx_INCREF(__pyx_t_7);
10714  __Pyx_INCREF(function);
10715  __Pyx_DECREF_SET(__pyx_t_1, function);
10716  }
10717  }
10718  if (!__pyx_t_7) {
10719  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_9); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10720  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10721  __Pyx_GOTREF(__pyx_t_5);
10722  } else {
10723  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10724  __Pyx_GOTREF(__pyx_t_3);
10725  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
10726  __Pyx_GIVEREF(__pyx_t_9);
10727  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_9);
10728  __pyx_t_9 = 0;
10729  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10730  __Pyx_GOTREF(__pyx_t_5);
10731  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10732  }
10733  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10734  __pyx_t_1 = PyNumber_Multiply(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10735  __Pyx_GOTREF(__pyx_t_1);
10736  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10737  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10738  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10739  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10740 
10741  /* "WaveTools.pyx":461
10742  * if phi == None:
10743  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10744  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves') # <<<<<<<<<<<<<<
10745  * else:
10746  * try:
10747  */
10748  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10749  __Pyx_GOTREF(__pyx_t_1);
10750  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__44, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10751  __Pyx_GOTREF(__pyx_t_5);
10752  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10753  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10754 
10755  /* "WaveTools.pyx":459
10756  * self.omega = 2.*pi*self.fi
10757  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
10758  * if phi == None: # <<<<<<<<<<<<<<
10759  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
10760  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10761  */
10762  goto __pyx_L3;
10763  }
10764 
10765  /* "WaveTools.pyx":463
10766  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10767  * else:
10768  * try: # <<<<<<<<<<<<<<
10769  * self.phi = np.array(phi)
10770  * if self.phi.shape[0] != self.fi.shape[0]:
10771  */
10772  /*else*/ {
10773  {
10774  __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
10775  __Pyx_XGOTREF(__pyx_t_11);
10776  __Pyx_XGOTREF(__pyx_t_12);
10777  __Pyx_XGOTREF(__pyx_t_13);
10778  /*try:*/ {
10779 
10780  /* "WaveTools.pyx":464
10781  * else:
10782  * try:
10783  * self.phi = np.array(phi) # <<<<<<<<<<<<<<
10784  * if self.phi.shape[0] != self.fi.shape[0]:
10785  * logEvent('WaveTools.py: Phase array must have N elements')
10786  */
10787  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10788  __Pyx_GOTREF(__pyx_t_1);
10789  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10790  __Pyx_GOTREF(__pyx_t_6);
10791  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10792  __pyx_t_1 = NULL;
10793  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
10794  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
10795  if (likely(__pyx_t_1)) {
10796  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
10797  __Pyx_INCREF(__pyx_t_1);
10798  __Pyx_INCREF(function);
10799  __Pyx_DECREF_SET(__pyx_t_6, function);
10800  }
10801  }
10802  if (!__pyx_t_1) {
10803  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10804  __Pyx_GOTREF(__pyx_t_5);
10805  } else {
10806  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10807  __Pyx_GOTREF(__pyx_t_3);
10808  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1); __pyx_t_1 = NULL;
10809  __Pyx_INCREF(__pyx_v_phi);
10810  __Pyx_GIVEREF(__pyx_v_phi);
10811  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_phi);
10812  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10813  __Pyx_GOTREF(__pyx_t_5);
10814  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10815  }
10816  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10817  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10818  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10819 
10820  /* "WaveTools.pyx":465
10821  * try:
10822  * self.phi = np.array(phi)
10823  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
10824  * logEvent('WaveTools.py: Phase array must have N elements')
10825  * sys.exit(1)
10826  */
10827  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10828  __Pyx_GOTREF(__pyx_t_5);
10829  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10830  __Pyx_GOTREF(__pyx_t_6);
10831  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10832  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
10833  __Pyx_GOTREF(__pyx_t_5);
10834  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10835  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10836  __Pyx_GOTREF(__pyx_t_6);
10837  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10838  __Pyx_GOTREF(__pyx_t_3);
10839  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10840  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
10841  __Pyx_GOTREF(__pyx_t_6);
10842  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10843  __pyx_t_3 = PyObject_RichCompare(__pyx_t_5, __pyx_t_6, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10844  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10845  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10846  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10847  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10848  if (__pyx_t_10) {
10849 
10850  /* "WaveTools.pyx":466
10851  * self.phi = np.array(phi)
10852  * if self.phi.shape[0] != self.fi.shape[0]:
10853  * logEvent('WaveTools.py: Phase array must have N elements') # <<<<<<<<<<<<<<
10854  * sys.exit(1)
10855  *
10856  */
10857  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10858  __Pyx_GOTREF(__pyx_t_3);
10859  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10860  __Pyx_GOTREF(__pyx_t_6);
10861  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10862  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10863 
10864  /* "WaveTools.pyx":467
10865  * if self.phi.shape[0] != self.fi.shape[0]:
10866  * logEvent('WaveTools.py: Phase array must have N elements')
10867  * sys.exit(1) # <<<<<<<<<<<<<<
10868  *
10869  * except:
10870  */
10871  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10872  __Pyx_GOTREF(__pyx_t_6);
10873  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10874  __Pyx_GOTREF(__pyx_t_3);
10875  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10876  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__46, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
10877  __Pyx_GOTREF(__pyx_t_6);
10878  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10879  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10880 
10881  /* "WaveTools.pyx":465
10882  * try:
10883  * self.phi = np.array(phi)
10884  * if self.phi.shape[0] != self.fi.shape[0]: # <<<<<<<<<<<<<<
10885  * logEvent('WaveTools.py: Phase array must have N elements')
10886  * sys.exit(1)
10887  */
10888  }
10889 
10890  /* "WaveTools.pyx":463
10891  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10892  * else:
10893  * try: # <<<<<<<<<<<<<<
10894  * self.phi = np.array(phi)
10895  * if self.phi.shape[0] != self.fi.shape[0]:
10896  */
10897  }
10898  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
10899  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
10900  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
10901  goto __pyx_L11_try_end;
10902  __pyx_L4_error:;
10903  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
10904  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
10905  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
10906  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
10907  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
10908  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
10909  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
10910 
10911  /* "WaveTools.pyx":469
10912  * sys.exit(1)
10913  *
10914  * except: # <<<<<<<<<<<<<<
10915  * logEvent('WaveTools.py: phi argument must be an array with N elements')
10916  * sys.exit(1)
10917  */
10918  /*except:*/ {
10919  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
10920  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_3, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10921  __Pyx_GOTREF(__pyx_t_6);
10922  __Pyx_GOTREF(__pyx_t_3);
10923  __Pyx_GOTREF(__pyx_t_5);
10924 
10925  /* "WaveTools.pyx":470
10926  *
10927  * except:
10928  * logEvent('WaveTools.py: phi argument must be an array with N elements') # <<<<<<<<<<<<<<
10929  * sys.exit(1)
10930  *
10931  */
10932  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10933  __Pyx_GOTREF(__pyx_t_1);
10934  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__47, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10935  __Pyx_GOTREF(__pyx_t_9);
10936  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10937  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10938 
10939  /* "WaveTools.pyx":471
10940  * except:
10941  * logEvent('WaveTools.py: phi argument must be an array with N elements')
10942  * sys.exit(1) # <<<<<<<<<<<<<<
10943  *
10944  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
10945  */
10946  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10947  __Pyx_GOTREF(__pyx_t_9);
10948  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_exit); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10949  __Pyx_GOTREF(__pyx_t_1);
10950  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10951  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L6_except_error;}
10952  __Pyx_GOTREF(__pyx_t_9);
10953  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
10954  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
10955  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
10956  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
10957  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
10958  goto __pyx_L5_exception_handled;
10959  }
10960  __pyx_L6_except_error:;
10961 
10962  /* "WaveTools.pyx":463
10963  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves')
10964  * else:
10965  * try: # <<<<<<<<<<<<<<
10966  * self.phi = np.array(phi)
10967  * if self.phi.shape[0] != self.fi.shape[0]:
10968  */
10969  __Pyx_XGIVEREF(__pyx_t_11);
10970  __Pyx_XGIVEREF(__pyx_t_12);
10971  __Pyx_XGIVEREF(__pyx_t_13);
10972  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
10973  goto __pyx_L1_error;
10974  __pyx_L5_exception_handled:;
10975  __Pyx_XGIVEREF(__pyx_t_11);
10976  __Pyx_XGIVEREF(__pyx_t_12);
10977  __Pyx_XGIVEREF(__pyx_t_13);
10978  __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
10979  __pyx_L11_try_end:;
10980  }
10981  }
10982  __pyx_L3:;
10983 
10984  /* "WaveTools.pyx":474
10985  *
10986  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
10987  * self.fim = reduceToIntervals(self.fi,self.df) # <<<<<<<<<<<<<<
10988  * if (spectral_params == None):
10989  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
10990  */
10991  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10992  __Pyx_GOTREF(__pyx_t_3);
10993  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10994  __Pyx_GOTREF(__pyx_t_6);
10995  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_df); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
10996  __Pyx_GOTREF(__pyx_t_9);
10997  __pyx_t_1 = NULL;
10998  __pyx_t_4 = 0;
10999  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
11000  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
11001  if (likely(__pyx_t_1)) {
11002  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
11003  __Pyx_INCREF(__pyx_t_1);
11004  __Pyx_INCREF(function);
11005  __Pyx_DECREF_SET(__pyx_t_3, function);
11006  __pyx_t_4 = 1;
11007  }
11008  }
11009  __pyx_t_7 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11010  __Pyx_GOTREF(__pyx_t_7);
11011  if (__pyx_t_1) {
11012  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1); __pyx_t_1 = NULL;
11013  }
11014  __Pyx_GIVEREF(__pyx_t_6);
11015  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_4, __pyx_t_6);
11016  __Pyx_GIVEREF(__pyx_t_9);
11017  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_4, __pyx_t_9);
11018  __pyx_t_6 = 0;
11019  __pyx_t_9 = 0;
11020  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11021  __Pyx_GOTREF(__pyx_t_5);
11022  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11023  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11024  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_fim, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 474; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11025  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11026 
11027  /* "WaveTools.pyx":475
11028  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
11029  * self.fim = reduceToIntervals(self.fi,self.df)
11030  * if (spectral_params == None): # <<<<<<<<<<<<<<
11031  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11032  * else:
11033  */
11034  __pyx_t_5 = PyObject_RichCompare(__pyx_v_spectral_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11035  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_10 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11036  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11037  if (__pyx_t_10) {
11038 
11039  /* "WaveTools.pyx":476
11040  * self.fim = reduceToIntervals(self.fi,self.df)
11041  * if (spectral_params == None):
11042  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs) # <<<<<<<<<<<<<<
11043  * else:
11044  * try:
11045  */
11046  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11047  __Pyx_GOTREF(__pyx_t_3);
11048  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11049  __Pyx_GOTREF(__pyx_t_7);
11050  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11051  __Pyx_GOTREF(__pyx_t_9);
11052  __Pyx_INCREF(__pyx_v_spec_fun);
11053  __pyx_t_6 = __pyx_v_spec_fun; __pyx_t_1 = NULL;
11054  __pyx_t_4 = 0;
11055  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
11056  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
11057  if (likely(__pyx_t_1)) {
11058  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
11059  __Pyx_INCREF(__pyx_t_1);
11060  __Pyx_INCREF(function);
11061  __Pyx_DECREF_SET(__pyx_t_6, function);
11062  __pyx_t_4 = 1;
11063  }
11064  }
11065  __pyx_t_2 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11066  __Pyx_GOTREF(__pyx_t_2);
11067  if (__pyx_t_1) {
11068  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1); __pyx_t_1 = NULL;
11069  }
11070  __Pyx_GIVEREF(__pyx_t_3);
11071  PyTuple_SET_ITEM(__pyx_t_2, 0+__pyx_t_4, __pyx_t_3);
11072  __Pyx_GIVEREF(__pyx_t_7);
11073  PyTuple_SET_ITEM(__pyx_t_2, 1+__pyx_t_4, __pyx_t_7);
11074  __Pyx_GIVEREF(__pyx_t_9);
11075  PyTuple_SET_ITEM(__pyx_t_2, 2+__pyx_t_4, __pyx_t_9);
11076  __pyx_t_3 = 0;
11077  __pyx_t_7 = 0;
11078  __pyx_t_9 = 0;
11079  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11080  __Pyx_GOTREF(__pyx_t_5);
11081  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11082  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11083  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11084  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11085 
11086  /* "WaveTools.pyx":475
11087  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
11088  * self.fim = reduceToIntervals(self.fi,self.df)
11089  * if (spectral_params == None): # <<<<<<<<<<<<<<
11090  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11091  * else:
11092  */
11093  goto __pyx_L15;
11094  }
11095 
11096  /* "WaveTools.pyx":478
11097  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11098  * else:
11099  * try: # <<<<<<<<<<<<<<
11100  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11101  * except:
11102  */
11103  /*else*/ {
11104  {
11105  __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
11106  __Pyx_XGOTREF(__pyx_t_13);
11107  __Pyx_XGOTREF(__pyx_t_12);
11108  __Pyx_XGOTREF(__pyx_t_11);
11109  /*try:*/ {
11110 
11111  /* "WaveTools.pyx":479
11112  * else:
11113  * try:
11114  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params) # <<<<<<<<<<<<<<
11115  * except:
11116  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11117  */
11118  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11119  __Pyx_GOTREF(__pyx_t_5);
11120  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fp); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11121  __Pyx_GOTREF(__pyx_t_6);
11122  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Hs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11123  __Pyx_GOTREF(__pyx_t_2);
11124  __pyx_t_9 = PyTuple_New(3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11125  __Pyx_GOTREF(__pyx_t_9);
11126  __Pyx_GIVEREF(__pyx_t_5);
11127  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_5);
11128  __Pyx_GIVEREF(__pyx_t_6);
11129  PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_t_6);
11130  __Pyx_GIVEREF(__pyx_t_2);
11131  PyTuple_SET_ITEM(__pyx_t_9, 2, __pyx_t_2);
11132  __pyx_t_5 = 0;
11133  __pyx_t_6 = 0;
11134  __pyx_t_2 = 0;
11135  if (unlikely(__pyx_v_spectral_params == Py_None)) {
11136  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
11137  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11138  }
11139  if (likely(PyDict_CheckExact(__pyx_v_spectral_params))) {
11140  __pyx_t_2 = PyDict_Copy(__pyx_v_spectral_params); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11141  __Pyx_GOTREF(__pyx_t_2);
11142  } else {
11143  __pyx_t_2 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spectral_params, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11144  __Pyx_GOTREF(__pyx_t_2);
11145  }
11146  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_v_spec_fun, __pyx_t_9, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11147  __Pyx_GOTREF(__pyx_t_6);
11148  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11149  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11150  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L16_error;}
11151  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11152 
11153  /* "WaveTools.pyx":478
11154  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11155  * else:
11156  * try: # <<<<<<<<<<<<<<
11157  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11158  * except:
11159  */
11160  }
11161  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
11162  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
11163  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
11164  goto __pyx_L23_try_end;
11165  __pyx_L16_error:;
11166  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
11167  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
11168  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
11169  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
11170  __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
11171  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
11172  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
11173 
11174  /* "WaveTools.pyx":480
11175  * try:
11176  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11177  * except: # <<<<<<<<<<<<<<
11178  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11179  * sys.exit(1)
11180  */
11181  /*except:*/ {
11182  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11183  if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11184  __Pyx_GOTREF(__pyx_t_6);
11185  __Pyx_GOTREF(__pyx_t_2);
11186  __Pyx_GOTREF(__pyx_t_9);
11187 
11188  /* "WaveTools.pyx":481
11189  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11190  * except:
11191  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
11192  * sys.exit(1)
11193  *
11194  */
11195  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11196  __Pyx_GOTREF(__pyx_t_7);
11197  __pyx_t_3 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Additional_spectral, __pyx_v_spectName); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11198  __Pyx_GOTREF(__pyx_t_3);
11199  __pyx_t_1 = NULL;
11200  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
11201  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
11202  if (likely(__pyx_t_1)) {
11203  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
11204  __Pyx_INCREF(__pyx_t_1);
11205  __Pyx_INCREF(function);
11206  __Pyx_DECREF_SET(__pyx_t_7, function);
11207  }
11208  }
11209  if (!__pyx_t_1) {
11210  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11211  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
11212  __Pyx_GOTREF(__pyx_t_5);
11213  } else {
11214  __pyx_t_14 = PyTuple_New(1+1); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11215  __Pyx_GOTREF(__pyx_t_14);
11216  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_14, 0, __pyx_t_1); __pyx_t_1 = NULL;
11217  __Pyx_GIVEREF(__pyx_t_3);
11218  PyTuple_SET_ITEM(__pyx_t_14, 0+1, __pyx_t_3);
11219  __pyx_t_3 = 0;
11220  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_14, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11221  __Pyx_GOTREF(__pyx_t_5);
11222  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
11223  }
11224  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11225  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11226 
11227  /* "WaveTools.pyx":482
11228  * except:
11229  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
11230  * sys.exit(1) # <<<<<<<<<<<<<<
11231  *
11232  *
11233  */
11234  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11235  __Pyx_GOTREF(__pyx_t_5);
11236  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11237  __Pyx_GOTREF(__pyx_t_7);
11238  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11239  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__49, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L18_except_error;}
11240  __Pyx_GOTREF(__pyx_t_5);
11241  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
11242  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11243  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11244  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11245  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11246  goto __pyx_L17_exception_handled;
11247  }
11248  __pyx_L18_except_error:;
11249 
11250  /* "WaveTools.pyx":478
11251  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs)
11252  * else:
11253  * try: # <<<<<<<<<<<<<<
11254  * self.Si_Jm = spec_fun(self.fim,self.fp,self.Hs,**spectral_params)
11255  * except:
11256  */
11257  __Pyx_XGIVEREF(__pyx_t_13);
11258  __Pyx_XGIVEREF(__pyx_t_12);
11259  __Pyx_XGIVEREF(__pyx_t_11);
11260  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
11261  goto __pyx_L1_error;
11262  __pyx_L17_exception_handled:;
11263  __Pyx_XGIVEREF(__pyx_t_13);
11264  __Pyx_XGIVEREF(__pyx_t_12);
11265  __Pyx_XGIVEREF(__pyx_t_11);
11266  __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
11267  __pyx_L23_try_end:;
11268  }
11269  }
11270  __pyx_L15:;
11271 
11272  /* "WaveTools.pyx":485
11273  *
11274  *
11275  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim)) # <<<<<<<<<<<<<<
11276  * self.kDir = np.zeros((len(self.ki),3),)
11277  * for ii in range(3):
11278  */
11279  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11280  __Pyx_GOTREF(__pyx_t_2);
11281  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11282  __Pyx_GOTREF(__pyx_t_6);
11283  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11284  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11285  __Pyx_GOTREF(__pyx_t_5);
11286  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11287  __Pyx_GOTREF(__pyx_t_7);
11288  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11289  __Pyx_GOTREF(__pyx_t_14);
11290  __pyx_t_3 = NULL;
11291  __pyx_t_4 = 0;
11292  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
11293  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
11294  if (likely(__pyx_t_3)) {
11295  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
11296  __Pyx_INCREF(__pyx_t_3);
11297  __Pyx_INCREF(function);
11298  __Pyx_DECREF_SET(__pyx_t_5, function);
11299  __pyx_t_4 = 1;
11300  }
11301  }
11302  __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11303  __Pyx_GOTREF(__pyx_t_1);
11304  if (__pyx_t_3) {
11305  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3); __pyx_t_3 = NULL;
11306  }
11307  __Pyx_GIVEREF(__pyx_t_7);
11308  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_7);
11309  __Pyx_GIVEREF(__pyx_t_14);
11310  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_14);
11311  __pyx_t_7 = 0;
11312  __pyx_t_14 = 0;
11313  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11314  __Pyx_GOTREF(__pyx_t_2);
11315  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11316  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11317  __pyx_t_5 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11318  __Pyx_GOTREF(__pyx_t_5);
11319  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11320  __pyx_t_2 = NULL;
11321  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
11322  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
11323  if (likely(__pyx_t_2)) {
11324  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
11325  __Pyx_INCREF(__pyx_t_2);
11326  __Pyx_INCREF(function);
11327  __Pyx_DECREF_SET(__pyx_t_6, function);
11328  }
11329  }
11330  if (!__pyx_t_2) {
11331  __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11332  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11333  __Pyx_GOTREF(__pyx_t_9);
11334  } else {
11335  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11336  __Pyx_GOTREF(__pyx_t_1);
11337  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2); __pyx_t_2 = NULL;
11338  __Pyx_GIVEREF(__pyx_t_5);
11339  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_t_5);
11340  __pyx_t_5 = 0;
11341  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11342  __Pyx_GOTREF(__pyx_t_9);
11343  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11344  }
11345  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11346  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11347  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11348 
11349  /* "WaveTools.pyx":486
11350  *
11351  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim))
11352  * self.kDir = np.zeros((len(self.ki),3),) # <<<<<<<<<<<<<<
11353  * for ii in range(3):
11354  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11355  */
11356  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11357  __Pyx_GOTREF(__pyx_t_6);
11358  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11359  __Pyx_GOTREF(__pyx_t_1);
11360  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11361  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11362  __Pyx_GOTREF(__pyx_t_6);
11363  __pyx_t_4 = PyObject_Length(__pyx_t_6); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11364  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11365  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11366  __Pyx_GOTREF(__pyx_t_6);
11367  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11368  __Pyx_GOTREF(__pyx_t_5);
11369  __Pyx_GIVEREF(__pyx_t_6);
11370  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6);
11371  __Pyx_INCREF(__pyx_int_3);
11372  __Pyx_GIVEREF(__pyx_int_3);
11373  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_int_3);
11374  __pyx_t_6 = 0;
11375  __pyx_t_6 = NULL;
11376  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
11377  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_1);
11378  if (likely(__pyx_t_6)) {
11379  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
11380  __Pyx_INCREF(__pyx_t_6);
11381  __Pyx_INCREF(function);
11382  __Pyx_DECREF_SET(__pyx_t_1, function);
11383  }
11384  }
11385  if (!__pyx_t_6) {
11386  __pyx_t_9 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11387  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11388  __Pyx_GOTREF(__pyx_t_9);
11389  } else {
11390  __pyx_t_2 = PyTuple_New(1+1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11391  __Pyx_GOTREF(__pyx_t_2);
11392  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_6); __pyx_t_6 = NULL;
11393  __Pyx_GIVEREF(__pyx_t_5);
11394  PyTuple_SET_ITEM(__pyx_t_2, 0+1, __pyx_t_5);
11395  __pyx_t_5 = 0;
11396  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11397  __Pyx_GOTREF(__pyx_t_9);
11398  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11399  }
11400  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11401  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11402  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11403 
11404  /* "WaveTools.pyx":487
11405  * self.ai = np.sqrt(2.*returnRectangles(self.Si_Jm,self.fim))
11406  * self.kDir = np.zeros((len(self.ki),3),)
11407  * for ii in range(3): # <<<<<<<<<<<<<<
11408  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11409  * def eta(self, x, t):
11410  */
11411  for (__pyx_t_15 = 0; __pyx_t_15 < 3; __pyx_t_15+=1) {
11412  __pyx_v_ii = __pyx_t_15;
11413 
11414  /* "WaveTools.pyx":488
11415  * self.kDir = np.zeros((len(self.ki),3),)
11416  * for ii in range(3):
11417  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
11418  * def eta(self, x, t):
11419  * """Free surface displacement
11420  */
11421  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11422  __Pyx_GOTREF(__pyx_t_9);
11423  __pyx_t_1 = __Pyx_PyObject_GetSlice(__pyx_t_9, 0, 0, NULL, NULL, &__pyx_slice__50, 0, 0, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11424  __Pyx_GOTREF(__pyx_t_1);
11425  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11426  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11427  __Pyx_GOTREF(__pyx_t_9);
11428  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_9, __pyx_v_ii, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11429  __Pyx_GOTREF(__pyx_t_2);
11430  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11431  __pyx_t_9 = PyNumber_Multiply(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11432  __Pyx_GOTREF(__pyx_t_9);
11433  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11434  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11435  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11436  __Pyx_GOTREF(__pyx_t_2);
11437  __pyx_t_1 = __Pyx_PyInt_From_long(__pyx_v_ii); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11438  __Pyx_GOTREF(__pyx_t_1);
11439  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11440  __Pyx_GOTREF(__pyx_t_5);
11441  __Pyx_INCREF(__pyx_slice__51);
11442  __Pyx_GIVEREF(__pyx_slice__51);
11443  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_slice__51);
11444  __Pyx_GIVEREF(__pyx_t_1);
11445  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
11446  __pyx_t_1 = 0;
11447  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_5, __pyx_t_9) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11448  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11449  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11450  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
11451  }
11452 
11453  /* "WaveTools.pyx":426
11454  * """
11455  *
11456  * def __init__(self, # <<<<<<<<<<<<<<
11457  * Tp,
11458  * Hs,
11459  */
11460 
11461  /* function exit code */
11462  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
11463  goto __pyx_L0;
11464  __pyx_L1_error:;
11465  __Pyx_XDECREF(__pyx_t_1);
11466  __Pyx_XDECREF(__pyx_t_2);
11467  __Pyx_XDECREF(__pyx_t_3);
11468  __Pyx_XDECREF(__pyx_t_5);
11469  __Pyx_XDECREF(__pyx_t_6);
11470  __Pyx_XDECREF(__pyx_t_7);
11471  __Pyx_XDECREF(__pyx_t_9);
11472  __Pyx_XDECREF(__pyx_t_14);
11473  __Pyx_AddTraceback("WaveTools.RandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
11474  __pyx_r = NULL;
11475  __pyx_L0:;
11476  __Pyx_XDECREF(__pyx_v_validSpectra);
11477  __Pyx_XDECREF(__pyx_v_spec_fun);
11478  __Pyx_XGIVEREF(__pyx_r);
11479  __Pyx_RefNannyFinishContext();
11480  return __pyx_r;
11481 }
11482 
11483 /* "WaveTools.pyx":489
11484  * for ii in range(3):
11485  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11486  * def eta(self, x, t): # <<<<<<<<<<<<<<
11487  * """Free surface displacement
11488  *
11489  */
11490 
11491 /* Python wrapper */
11492 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11493 static char __pyx_doc_9WaveTools_11RandomWaves_2eta[] = "RandomWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
11494 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_2eta};
11495 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11496  PyObject *__pyx_v_self = 0;
11497  PyObject *__pyx_v_x = 0;
11498  PyObject *__pyx_v_t = 0;
11499  int __pyx_lineno = 0;
11500  const char *__pyx_filename = NULL;
11501  int __pyx_clineno = 0;
11502  PyObject *__pyx_r = 0;
11503  __Pyx_RefNannyDeclarations
11504  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
11505  {
11506  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
11507  PyObject* values[3] = {0,0,0};
11508  if (unlikely(__pyx_kwds)) {
11509  Py_ssize_t kw_args;
11510  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11511  switch (pos_args) {
11512  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11513  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11514  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11515  case 0: break;
11516  default: goto __pyx_L5_argtuple_error;
11517  }
11518  kw_args = PyDict_Size(__pyx_kwds);
11519  switch (pos_args) {
11520  case 0:
11521  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
11522  else goto __pyx_L5_argtuple_error;
11523  case 1:
11524  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
11525  else {
11526  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11527  }
11528  case 2:
11529  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
11530  else {
11531  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11532  }
11533  }
11534  if (unlikely(kw_args > 0)) {
11535  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11536  }
11537  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
11538  goto __pyx_L5_argtuple_error;
11539  } else {
11540  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11541  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11542  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11543  }
11544  __pyx_v_self = values[0];
11545  __pyx_v_x = values[1];
11546  __pyx_v_t = values[2];
11547  }
11548  goto __pyx_L4_argument_unpacking_done;
11549  __pyx_L5_argtuple_error:;
11550  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11551  __pyx_L3_error:;
11552  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
11553  __Pyx_RefNannyFinishContext();
11554  return NULL;
11555  __pyx_L4_argument_unpacking_done:;
11556  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
11557 
11558  /* function exit code */
11559  __Pyx_RefNannyFinishContext();
11560  return __pyx_r;
11561 }
11562 
11563 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
11564  PyObject *__pyx_v_Eta = NULL;
11565  PyObject *__pyx_v_ii = NULL;
11566  PyObject *__pyx_r = NULL;
11567  __Pyx_RefNannyDeclarations
11568  PyObject *__pyx_t_1 = NULL;
11569  PyObject *__pyx_t_2 = NULL;
11570  Py_ssize_t __pyx_t_3;
11571  PyObject *(*__pyx_t_4)(PyObject *);
11572  PyObject *__pyx_t_5 = NULL;
11573  PyObject *__pyx_t_6 = NULL;
11574  PyObject *__pyx_t_7 = NULL;
11575  PyObject *__pyx_t_8 = NULL;
11576  PyObject *__pyx_t_9 = NULL;
11577  PyObject *__pyx_t_10 = NULL;
11578  Py_ssize_t __pyx_t_11;
11579  PyObject *__pyx_t_12 = NULL;
11580  int __pyx_lineno = 0;
11581  const char *__pyx_filename = NULL;
11582  int __pyx_clineno = 0;
11583  __Pyx_RefNannySetupContext("eta", 0);
11584 
11585  /* "WaveTools.pyx":494
11586  * :param x: floating point x coordinate
11587  * :param t: time"""
11588  * Eta=0. # <<<<<<<<<<<<<<
11589  * for ii in range(self.N):
11590  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11591  */
11592  __Pyx_INCREF(__pyx_float_0_);
11593  __pyx_v_Eta = __pyx_float_0_;
11594 
11595  /* "WaveTools.pyx":495
11596  * :param t: time"""
11597  * Eta=0.
11598  * for ii in range(self.N): # <<<<<<<<<<<<<<
11599  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11600  * return Eta
11601  */
11602  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11603  __Pyx_GOTREF(__pyx_t_1);
11604  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11605  __Pyx_GOTREF(__pyx_t_2);
11606  __Pyx_GIVEREF(__pyx_t_1);
11607  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
11608  __pyx_t_1 = 0;
11609  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11610  __Pyx_GOTREF(__pyx_t_1);
11611  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11612  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
11613  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
11614  __pyx_t_4 = NULL;
11615  } else {
11616  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11617  __Pyx_GOTREF(__pyx_t_2);
11618  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11619  }
11620  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11621  for (;;) {
11622  if (likely(!__pyx_t_4)) {
11623  if (likely(PyList_CheckExact(__pyx_t_2))) {
11624  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
11625  #if CYTHON_COMPILING_IN_CPYTHON
11626  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11627  #else
11628  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11629  __Pyx_GOTREF(__pyx_t_1);
11630  #endif
11631  } else {
11632  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
11633  #if CYTHON_COMPILING_IN_CPYTHON
11634  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11635  #else
11636  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11637  __Pyx_GOTREF(__pyx_t_1);
11638  #endif
11639  }
11640  } else {
11641  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
11642  if (unlikely(!__pyx_t_1)) {
11643  PyObject* exc_type = PyErr_Occurred();
11644  if (exc_type) {
11645  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11646  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11647  }
11648  break;
11649  }
11650  __Pyx_GOTREF(__pyx_t_1);
11651  }
11652  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
11653  __pyx_t_1 = 0;
11654 
11655  /* "WaveTools.pyx":496
11656  * Eta=0.
11657  * for ii in range(self.N):
11658  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii]) # <<<<<<<<<<<<<<
11659  * return Eta
11660  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11661  */
11662  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11663  __Pyx_GOTREF(__pyx_t_5);
11664  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11665  __Pyx_GOTREF(__pyx_t_6);
11666  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11667  __Pyx_GOTREF(__pyx_t_7);
11668  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11669  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11670  __Pyx_GOTREF(__pyx_t_6);
11671  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11672  __Pyx_GOTREF(__pyx_t_8);
11673  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11674  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11675  __Pyx_GOTREF(__pyx_t_6);
11676  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11677  __Pyx_GOTREF(__pyx_t_9);
11678  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11679  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11680  __Pyx_GOTREF(__pyx_t_6);
11681  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11682  __Pyx_GOTREF(__pyx_t_10);
11683  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11684  __pyx_t_6 = NULL;
11685  __pyx_t_11 = 0;
11686  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
11687  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
11688  if (likely(__pyx_t_6)) {
11689  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
11690  __Pyx_INCREF(__pyx_t_6);
11691  __Pyx_INCREF(function);
11692  __Pyx_DECREF_SET(__pyx_t_5, function);
11693  __pyx_t_11 = 1;
11694  }
11695  }
11696  __pyx_t_12 = PyTuple_New(6+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11697  __Pyx_GOTREF(__pyx_t_12);
11698  if (__pyx_t_6) {
11699  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
11700  }
11701  __Pyx_INCREF(__pyx_v_x);
11702  __Pyx_GIVEREF(__pyx_v_x);
11703  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_x);
11704  __Pyx_INCREF(__pyx_v_t);
11705  __Pyx_GIVEREF(__pyx_v_t);
11706  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_t);
11707  __Pyx_GIVEREF(__pyx_t_7);
11708  PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_t_7);
11709  __Pyx_GIVEREF(__pyx_t_8);
11710  PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_11, __pyx_t_8);
11711  __Pyx_GIVEREF(__pyx_t_9);
11712  PyTuple_SET_ITEM(__pyx_t_12, 4+__pyx_t_11, __pyx_t_9);
11713  __Pyx_GIVEREF(__pyx_t_10);
11714  PyTuple_SET_ITEM(__pyx_t_12, 5+__pyx_t_11, __pyx_t_10);
11715  __pyx_t_7 = 0;
11716  __pyx_t_8 = 0;
11717  __pyx_t_9 = 0;
11718  __pyx_t_10 = 0;
11719  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11720  __Pyx_GOTREF(__pyx_t_1);
11721  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
11722  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
11723  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11724  __Pyx_GOTREF(__pyx_t_5);
11725  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11726  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_5);
11727  __pyx_t_5 = 0;
11728 
11729  /* "WaveTools.pyx":495
11730  * :param t: time"""
11731  * Eta=0.
11732  * for ii in range(self.N): # <<<<<<<<<<<<<<
11733  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11734  * return Eta
11735  */
11736  }
11737  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11738 
11739  /* "WaveTools.pyx":497
11740  * for ii in range(self.N):
11741  * Eta+= eta_mode(x, t,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
11742  * return Eta # <<<<<<<<<<<<<<
11743  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11744  *
11745  */
11746  __Pyx_XDECREF(__pyx_r);
11747  __Pyx_INCREF(__pyx_v_Eta);
11748  __pyx_r = __pyx_v_Eta;
11749  goto __pyx_L0;
11750 
11751  /* "WaveTools.pyx":489
11752  * for ii in range(3):
11753  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
11754  * def eta(self, x, t): # <<<<<<<<<<<<<<
11755  * """Free surface displacement
11756  *
11757  */
11758 
11759  /* function exit code */
11760  __pyx_L1_error:;
11761  __Pyx_XDECREF(__pyx_t_1);
11762  __Pyx_XDECREF(__pyx_t_2);
11763  __Pyx_XDECREF(__pyx_t_5);
11764  __Pyx_XDECREF(__pyx_t_6);
11765  __Pyx_XDECREF(__pyx_t_7);
11766  __Pyx_XDECREF(__pyx_t_8);
11767  __Pyx_XDECREF(__pyx_t_9);
11768  __Pyx_XDECREF(__pyx_t_10);
11769  __Pyx_XDECREF(__pyx_t_12);
11770  __Pyx_AddTraceback("WaveTools.RandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
11771  __pyx_r = NULL;
11772  __pyx_L0:;
11773  __Pyx_XDECREF(__pyx_v_Eta);
11774  __Pyx_XDECREF(__pyx_v_ii);
11775  __Pyx_XGIVEREF(__pyx_r);
11776  __Pyx_RefNannyFinishContext();
11777  return __pyx_r;
11778 }
11779 
11780 /* "WaveTools.pyx":500
11781  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
11782  *
11783  * def u(self, x, t): # <<<<<<<<<<<<<<
11784  * """x-component of velocity
11785  *
11786  */
11787 
11788 /* Python wrapper */
11789 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
11790 static char __pyx_doc_9WaveTools_11RandomWaves_4u[] = "RandomWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
11791 static PyMethodDef __pyx_mdef_9WaveTools_11RandomWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_11RandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_11RandomWaves_4u};
11792 static PyObject *__pyx_pw_9WaveTools_11RandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
11793  PyObject *__pyx_v_self = 0;
11794  PyObject *__pyx_v_x = 0;
11795  PyObject *__pyx_v_t = 0;
11796  int __pyx_lineno = 0;
11797  const char *__pyx_filename = NULL;
11798  int __pyx_clineno = 0;
11799  PyObject *__pyx_r = 0;
11800  __Pyx_RefNannyDeclarations
11801  __Pyx_RefNannySetupContext("u (wrapper)", 0);
11802  {
11803  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
11804  PyObject* values[3] = {0,0,0};
11805  if (unlikely(__pyx_kwds)) {
11806  Py_ssize_t kw_args;
11807  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
11808  switch (pos_args) {
11809  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11810  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11811  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11812  case 0: break;
11813  default: goto __pyx_L5_argtuple_error;
11814  }
11815  kw_args = PyDict_Size(__pyx_kwds);
11816  switch (pos_args) {
11817  case 0:
11818  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
11819  else goto __pyx_L5_argtuple_error;
11820  case 1:
11821  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
11822  else {
11823  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11824  }
11825  case 2:
11826  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
11827  else {
11828  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11829  }
11830  }
11831  if (unlikely(kw_args > 0)) {
11832  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11833  }
11834  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
11835  goto __pyx_L5_argtuple_error;
11836  } else {
11837  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
11838  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
11839  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
11840  }
11841  __pyx_v_self = values[0];
11842  __pyx_v_x = values[1];
11843  __pyx_v_t = values[2];
11844  }
11845  goto __pyx_L4_argument_unpacking_done;
11846  __pyx_L5_argtuple_error:;
11847  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
11848  __pyx_L3_error:;
11849  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
11850  __Pyx_RefNannyFinishContext();
11851  return NULL;
11852  __pyx_L4_argument_unpacking_done:;
11853  __pyx_r = __pyx_pf_9WaveTools_11RandomWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
11854 
11855  /* function exit code */
11856  __Pyx_RefNannyFinishContext();
11857  return __pyx_r;
11858 }
11859 
11860 static PyObject *__pyx_pf_9WaveTools_11RandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
11861  PyObject *__pyx_v_U = NULL;
11862  PyObject *__pyx_v_ii = NULL;
11863  PyObject *__pyx_r = NULL;
11864  __Pyx_RefNannyDeclarations
11865  PyObject *__pyx_t_1 = NULL;
11866  PyObject *__pyx_t_2 = NULL;
11867  Py_ssize_t __pyx_t_3;
11868  PyObject *(*__pyx_t_4)(PyObject *);
11869  PyObject *__pyx_t_5 = NULL;
11870  PyObject *__pyx_t_6 = NULL;
11871  PyObject *__pyx_t_7 = NULL;
11872  PyObject *__pyx_t_8 = NULL;
11873  PyObject *__pyx_t_9 = NULL;
11874  PyObject *__pyx_t_10 = NULL;
11875  PyObject *__pyx_t_11 = NULL;
11876  PyObject *__pyx_t_12 = NULL;
11877  PyObject *__pyx_t_13 = NULL;
11878  PyObject *__pyx_t_14 = NULL;
11879  PyObject *__pyx_t_15 = NULL;
11880  Py_ssize_t __pyx_t_16;
11881  PyObject *__pyx_t_17 = NULL;
11882  int __pyx_lineno = 0;
11883  const char *__pyx_filename = NULL;
11884  int __pyx_clineno = 0;
11885  __Pyx_RefNannySetupContext("u", 0);
11886 
11887  /* "WaveTools.pyx":507
11888  * :param t: time
11889  * """
11890  * U=0. # <<<<<<<<<<<<<<
11891  * for ii in range(self.N):
11892  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
11893  */
11894  __Pyx_INCREF(__pyx_float_0_);
11895  __pyx_v_U = __pyx_float_0_;
11896 
11897  /* "WaveTools.pyx":508
11898  * """
11899  * U=0.
11900  * for ii in range(self.N): # <<<<<<<<<<<<<<
11901  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
11902  * return U
11903  */
11904  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11905  __Pyx_GOTREF(__pyx_t_1);
11906  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11907  __Pyx_GOTREF(__pyx_t_2);
11908  __Pyx_GIVEREF(__pyx_t_1);
11909  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
11910  __pyx_t_1 = 0;
11911  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11912  __Pyx_GOTREF(__pyx_t_1);
11913  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
11914  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
11915  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
11916  __pyx_t_4 = NULL;
11917  } else {
11918  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11919  __Pyx_GOTREF(__pyx_t_2);
11920  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11921  }
11922  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
11923  for (;;) {
11924  if (likely(!__pyx_t_4)) {
11925  if (likely(PyList_CheckExact(__pyx_t_2))) {
11926  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
11927  #if CYTHON_COMPILING_IN_CPYTHON
11928  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11929  #else
11930  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11931  __Pyx_GOTREF(__pyx_t_1);
11932  #endif
11933  } else {
11934  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
11935  #if CYTHON_COMPILING_IN_CPYTHON
11936  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11937  #else
11938  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11939  __Pyx_GOTREF(__pyx_t_1);
11940  #endif
11941  }
11942  } else {
11943  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
11944  if (unlikely(!__pyx_t_1)) {
11945  PyObject* exc_type = PyErr_Occurred();
11946  if (exc_type) {
11947  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
11948  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11949  }
11950  break;
11951  }
11952  __Pyx_GOTREF(__pyx_t_1);
11953  }
11954  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
11955  __pyx_t_1 = 0;
11956 
11957  /* "WaveTools.pyx":509
11958  * U=0.
11959  * for ii in range(self.N):
11960  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
11961  * return U
11962  *
11963  */
11964  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11965  __Pyx_GOTREF(__pyx_t_5);
11966  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11967  __Pyx_GOTREF(__pyx_t_6);
11968  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11969  __Pyx_GOTREF(__pyx_t_7);
11970  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11971  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11972  __Pyx_GOTREF(__pyx_t_6);
11973  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11974  __Pyx_GOTREF(__pyx_t_8);
11975  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11976  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11977  __Pyx_GOTREF(__pyx_t_6);
11978  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11979  __Pyx_GOTREF(__pyx_t_9);
11980  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11981  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11982  __Pyx_GOTREF(__pyx_t_6);
11983  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11984  __Pyx_GOTREF(__pyx_t_10);
11985  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11986  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11987  __Pyx_GOTREF(__pyx_t_6);
11988  __pyx_t_11 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
11989  __Pyx_GOTREF(__pyx_t_11);
11990  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
11991  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11992  __Pyx_GOTREF(__pyx_t_6);
11993  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11994  __Pyx_GOTREF(__pyx_t_12);
11995  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11996  __Pyx_GOTREF(__pyx_t_13);
11997  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
11998  __Pyx_GOTREF(__pyx_t_14);
11999  __pyx_t_15 = NULL;
12000  __pyx_t_16 = 0;
12001  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
12002  __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
12003  if (likely(__pyx_t_15)) {
12004  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
12005  __Pyx_INCREF(__pyx_t_15);
12006  __Pyx_INCREF(function);
12007  __Pyx_DECREF_SET(__pyx_t_5, function);
12008  __pyx_t_16 = 1;
12009  }
12010  }
12011  __pyx_t_17 = PyTuple_New(11+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12012  __Pyx_GOTREF(__pyx_t_17);
12013  if (__pyx_t_15) {
12014  __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL;
12015  }
12016  __Pyx_INCREF(__pyx_v_x);
12017  __Pyx_GIVEREF(__pyx_v_x);
12018  PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_v_x);
12019  __Pyx_INCREF(__pyx_v_t);
12020  __Pyx_GIVEREF(__pyx_v_t);
12021  PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_v_t);
12022  __Pyx_GIVEREF(__pyx_t_7);
12023  PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_16, __pyx_t_7);
12024  __Pyx_GIVEREF(__pyx_t_8);
12025  PyTuple_SET_ITEM(__pyx_t_17, 3+__pyx_t_16, __pyx_t_8);
12026  __Pyx_GIVEREF(__pyx_t_9);
12027  PyTuple_SET_ITEM(__pyx_t_17, 4+__pyx_t_16, __pyx_t_9);
12028  __Pyx_GIVEREF(__pyx_t_10);
12029  PyTuple_SET_ITEM(__pyx_t_17, 5+__pyx_t_16, __pyx_t_10);
12030  __Pyx_GIVEREF(__pyx_t_11);
12031  PyTuple_SET_ITEM(__pyx_t_17, 6+__pyx_t_16, __pyx_t_11);
12032  __Pyx_GIVEREF(__pyx_t_6);
12033  PyTuple_SET_ITEM(__pyx_t_17, 7+__pyx_t_16, __pyx_t_6);
12034  __Pyx_GIVEREF(__pyx_t_12);
12035  PyTuple_SET_ITEM(__pyx_t_17, 8+__pyx_t_16, __pyx_t_12);
12036  __Pyx_GIVEREF(__pyx_t_13);
12037  PyTuple_SET_ITEM(__pyx_t_17, 9+__pyx_t_16, __pyx_t_13);
12038  __Pyx_GIVEREF(__pyx_t_14);
12039  PyTuple_SET_ITEM(__pyx_t_17, 10+__pyx_t_16, __pyx_t_14);
12040  __pyx_t_7 = 0;
12041  __pyx_t_8 = 0;
12042  __pyx_t_9 = 0;
12043  __pyx_t_10 = 0;
12044  __pyx_t_11 = 0;
12045  __pyx_t_6 = 0;
12046  __pyx_t_12 = 0;
12047  __pyx_t_13 = 0;
12048  __pyx_t_14 = 0;
12049  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12050  __Pyx_GOTREF(__pyx_t_1);
12051  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
12052  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
12053  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12054  __Pyx_GOTREF(__pyx_t_5);
12055  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
12056  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_5);
12057  __pyx_t_5 = 0;
12058 
12059  /* "WaveTools.pyx":508
12060  * """
12061  * U=0.
12062  * for ii in range(self.N): # <<<<<<<<<<<<<<
12063  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
12064  * return U
12065  */
12066  }
12067  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
12068 
12069  /* "WaveTools.pyx":510
12070  * for ii in range(self.N):
12071  * U+= vel_mode(x, t, self.kDir[ii], self.ki[ii],self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
12072  * return U # <<<<<<<<<<<<<<
12073  *
12074  * class MultiSpectraRandomWaves(RandomWaves):
12075  */
12076  __Pyx_XDECREF(__pyx_r);
12077  __Pyx_INCREF(__pyx_v_U);
12078  __pyx_r = __pyx_v_U;
12079  goto __pyx_L0;
12080 
12081  /* "WaveTools.pyx":500
12082  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
12083  *
12084  * def u(self, x, t): # <<<<<<<<<<<<<<
12085  * """x-component of velocity
12086  *
12087  */
12088 
12089  /* function exit code */
12090  __pyx_L1_error:;
12091  __Pyx_XDECREF(__pyx_t_1);
12092  __Pyx_XDECREF(__pyx_t_2);
12093  __Pyx_XDECREF(__pyx_t_5);
12094  __Pyx_XDECREF(__pyx_t_6);
12095  __Pyx_XDECREF(__pyx_t_7);
12096  __Pyx_XDECREF(__pyx_t_8);
12097  __Pyx_XDECREF(__pyx_t_9);
12098  __Pyx_XDECREF(__pyx_t_10);
12099  __Pyx_XDECREF(__pyx_t_11);
12100  __Pyx_XDECREF(__pyx_t_12);
12101  __Pyx_XDECREF(__pyx_t_13);
12102  __Pyx_XDECREF(__pyx_t_14);
12103  __Pyx_XDECREF(__pyx_t_15);
12104  __Pyx_XDECREF(__pyx_t_17);
12105  __Pyx_AddTraceback("WaveTools.RandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
12106  __pyx_r = NULL;
12107  __pyx_L0:;
12108  __Pyx_XDECREF(__pyx_v_U);
12109  __Pyx_XDECREF(__pyx_v_ii);
12110  __Pyx_XGIVEREF(__pyx_r);
12111  __Pyx_RefNannyFinishContext();
12112  return __pyx_r;
12113 }
12114 
12115 /* "WaveTools.pyx":517
12116  * :param Nspectra, number of spectra
12117  * """
12118  * def __init__(self, # <<<<<<<<<<<<<<
12119  * Nspectra,
12120  * Tp, # np array with
12121  */
12122 
12123 /* Python wrapper */
12124 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
12125 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves___init__[] = "MultiSpectraRandomWaves.__init__(self, Nspectra, Tp, Hs, mwl, depth, waveDir, g, N, bandFactor, spectName, spectral_params, phi)";
12126 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves___init__};
12127 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
12128  PyObject *__pyx_v_self = 0;
12129  PyObject *__pyx_v_Nspectra = 0;
12130  PyObject *__pyx_v_Tp = 0;
12131  PyObject *__pyx_v_Hs = 0;
12132  PyObject *__pyx_v_mwl = 0;
12133  PyObject *__pyx_v_depth = 0;
12134  PyObject *__pyx_v_waveDir = 0;
12135  PyObject *__pyx_v_g = 0;
12136  PyObject *__pyx_v_N = 0;
12137  PyObject *__pyx_v_bandFactor = 0;
12138  PyObject *__pyx_v_spectName = 0;
12139  PyObject *__pyx_v_spectral_params = 0;
12140  PyObject *__pyx_v_phi = 0;
12141  int __pyx_lineno = 0;
12142  const char *__pyx_filename = NULL;
12143  int __pyx_clineno = 0;
12144  PyObject *__pyx_r = 0;
12145  __Pyx_RefNannyDeclarations
12146  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
12147  {
12148  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_Nspectra,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spectral_params,&__pyx_n_s_phi,0};
12149  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
12150  if (unlikely(__pyx_kwds)) {
12151  Py_ssize_t kw_args;
12152  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
12153  switch (pos_args) {
12154  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
12155  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
12156  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
12157  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
12158  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
12159  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
12160  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
12161  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
12162  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
12163  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
12164  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12165  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12166  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12167  case 0: break;
12168  default: goto __pyx_L5_argtuple_error;
12169  }
12170  kw_args = PyDict_Size(__pyx_kwds);
12171  switch (pos_args) {
12172  case 0:
12173  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
12174  else goto __pyx_L5_argtuple_error;
12175  case 1:
12176  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Nspectra)) != 0)) kw_args--;
12177  else {
12178  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12179  }
12180  case 2:
12181  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
12182  else {
12183  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12184  }
12185  case 3:
12186  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
12187  else {
12188  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12189  }
12190  case 4:
12191  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
12192  else {
12193  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12194  }
12195  case 5:
12196  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
12197  else {
12198  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12199  }
12200  case 6:
12201  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
12202  else {
12203  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12204  }
12205  case 7:
12206  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
12207  else {
12208  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12209  }
12210  case 8:
12211  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
12212  else {
12213  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12214  }
12215  case 9:
12216  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
12217  else {
12218  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12219  }
12220  case 10:
12221  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
12222  else {
12223  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12224  }
12225  case 11:
12226  if (likely((values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params)) != 0)) kw_args--;
12227  else {
12228  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 11); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12229  }
12230  case 12:
12231  if (likely((values[12] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi)) != 0)) kw_args--;
12232  else {
12233  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, 12); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12234  }
12235  }
12236  if (unlikely(kw_args > 0)) {
12237  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12238  }
12239  } else if (PyTuple_GET_SIZE(__pyx_args) != 13) {
12240  goto __pyx_L5_argtuple_error;
12241  } else {
12242  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
12243  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
12244  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
12245  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
12246  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
12247  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
12248  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
12249  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
12250  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
12251  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
12252  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
12253  values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
12254  values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
12255  }
12256  __pyx_v_self = values[0];
12257  __pyx_v_Nspectra = values[1];
12258  __pyx_v_Tp = values[2];
12259  __pyx_v_Hs = values[3];
12260  __pyx_v_mwl = values[4];
12261  __pyx_v_depth = values[5];
12262  __pyx_v_waveDir = values[6];
12263  __pyx_v_g = values[7];
12264  __pyx_v_N = values[8];
12265  __pyx_v_bandFactor = values[9];
12266  __pyx_v_spectName = values[10];
12267  __pyx_v_spectral_params = values[11];
12268  __pyx_v_phi = values[12];
12269  }
12270  goto __pyx_L4_argument_unpacking_done;
12271  __pyx_L5_argtuple_error:;
12272  __Pyx_RaiseArgtupleInvalid("__init__", 1, 13, 13, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12273  __pyx_L3_error:;
12274  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12275  __Pyx_RefNannyFinishContext();
12276  return NULL;
12277  __pyx_L4_argument_unpacking_done:;
12278  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_Nspectra, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spectral_params, __pyx_v_phi);
12279 
12280  /* function exit code */
12281  __Pyx_RefNannyFinishContext();
12282  return __pyx_r;
12283 }
12284 
12285 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_Nspectra, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_phi) {
12286  PyObject *__pyx_v_nn = NULL;
12287  PyObject *__pyx_v_NN = NULL;
12288  PyObject *__pyx_v_kk = NULL;
12289  PyObject *__pyx_v_NN1 = NULL;
12290  PyObject *__pyx_r = NULL;
12291  __Pyx_RefNannyDeclarations
12292  PyObject *__pyx_t_1 = NULL;
12293  PyObject *__pyx_t_2 = NULL;
12294  PyObject *__pyx_t_3 = NULL;
12295  int __pyx_t_4;
12296  Py_ssize_t __pyx_t_5;
12297  PyObject *__pyx_t_6 = NULL;
12298  PyObject *__pyx_t_7 = NULL;
12299  int __pyx_t_8;
12300  PyObject *__pyx_t_9 = NULL;
12301  PyObject *__pyx_t_10 = NULL;
12302  PyObject *__pyx_t_11 = NULL;
12303  PyObject *(*__pyx_t_12)(PyObject *);
12304  PyObject *__pyx_t_13 = NULL;
12305  PyObject *__pyx_t_14 = NULL;
12306  PyObject *__pyx_t_15 = NULL;
12307  PyObject *__pyx_t_16 = NULL;
12308  PyObject *__pyx_t_17 = NULL;
12309  PyObject *__pyx_t_18 = NULL;
12310  PyObject *__pyx_t_19 = NULL;
12311  Py_ssize_t __pyx_t_20;
12312  PyObject *__pyx_t_21 = NULL;
12313  int __pyx_lineno = 0;
12314  const char *__pyx_filename = NULL;
12315  int __pyx_clineno = 0;
12316  __Pyx_RefNannySetupContext("__init__", 0);
12317 
12318  /* "WaveTools.pyx":532
12319  * ):
12320  * # Checking length of arrays / lists to be equal to NSpectra
12321  * try: # <<<<<<<<<<<<<<
12322  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12323  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12324  */
12325  {
12326  __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3);
12327  __Pyx_XGOTREF(__pyx_t_1);
12328  __Pyx_XGOTREF(__pyx_t_2);
12329  __Pyx_XGOTREF(__pyx_t_3);
12330  /*try:*/ {
12331 
12332  /* "WaveTools.pyx":533
12333  * # Checking length of arrays / lists to be equal to NSpectra
12334  * try:
12335  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12336  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12337  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12338  */
12339  __pyx_t_5 = PyObject_Length(__pyx_v_Tp); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12340  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12341  __Pyx_GOTREF(__pyx_t_6);
12342  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12343  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12344  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12345  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12346  if (!__pyx_t_8) {
12347  } else {
12348  __pyx_t_4 = __pyx_t_8;
12349  goto __pyx_L12_bool_binop_done;
12350  }
12351  __pyx_t_5 = PyObject_Length(__pyx_v_Hs); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12352  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12353  __Pyx_GOTREF(__pyx_t_7);
12354  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12355  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12356  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12357  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12358  if (!__pyx_t_8) {
12359  } else {
12360  __pyx_t_4 = __pyx_t_8;
12361  goto __pyx_L12_bool_binop_done;
12362  }
12363  __pyx_t_5 = PyObject_Length(__pyx_v_waveDir); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12364  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12365  __Pyx_GOTREF(__pyx_t_6);
12366  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12367  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12368  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12369  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12370  if (!__pyx_t_8) {
12371  } else {
12372  __pyx_t_4 = __pyx_t_8;
12373  goto __pyx_L12_bool_binop_done;
12374  }
12375 
12376  /* "WaveTools.pyx":534
12377  * try:
12378  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12379  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \ # <<<<<<<<<<<<<<
12380  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12381  *
12382  */
12383  __pyx_t_5 = PyObject_Length(__pyx_v_N); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12384  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12385  __Pyx_GOTREF(__pyx_t_7);
12386  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12387  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12388  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12389  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12390  if (!__pyx_t_8) {
12391  } else {
12392  __pyx_t_4 = __pyx_t_8;
12393  goto __pyx_L12_bool_binop_done;
12394  }
12395  __pyx_t_5 = PyObject_Length(__pyx_v_bandFactor); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12396  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12397  __Pyx_GOTREF(__pyx_t_6);
12398  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12399  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12400  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12401  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12402  if (!__pyx_t_8) {
12403  } else {
12404  __pyx_t_4 = __pyx_t_8;
12405  goto __pyx_L12_bool_binop_done;
12406  }
12407 
12408  /* "WaveTools.pyx":535
12409  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12410  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12411  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra): # <<<<<<<<<<<<<<
12412  *
12413  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12414  */
12415  __pyx_t_5 = PyObject_Length(__pyx_v_spectName); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12416  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12417  __Pyx_GOTREF(__pyx_t_7);
12418  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12419  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12420  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12421  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12422  if (!__pyx_t_8) {
12423  } else {
12424  __pyx_t_4 = __pyx_t_8;
12425  goto __pyx_L12_bool_binop_done;
12426  }
12427  __pyx_t_5 = PyObject_Length(__pyx_v_spectral_params); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12428  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12429  __Pyx_GOTREF(__pyx_t_6);
12430  __pyx_t_7 = PyObject_RichCompare(__pyx_t_6, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12431  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12432  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12433  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12434  if (!__pyx_t_8) {
12435  } else {
12436  __pyx_t_4 = __pyx_t_8;
12437  goto __pyx_L12_bool_binop_done;
12438  }
12439  __pyx_t_5 = PyObject_Length(__pyx_v_phi); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12440  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12441  __Pyx_GOTREF(__pyx_t_7);
12442  __pyx_t_6 = PyObject_RichCompare(__pyx_t_7, __pyx_v_Nspectra, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12443  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12444  __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_8 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12445  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12446  __pyx_t_4 = __pyx_t_8;
12447  __pyx_L12_bool_binop_done:;
12448 
12449  /* "WaveTools.pyx":533
12450  * # Checking length of arrays / lists to be equal to NSpectra
12451  * try:
12452  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12453  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12454  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12455  */
12456  if (__pyx_t_4) {
12457 
12458  /* "WaveTools.pyx":537
12459  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12460  *
12461  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
12462  * sys.exit(1)
12463  *
12464  */
12465  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12466  __Pyx_GOTREF(__pyx_t_6);
12467  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12468  __Pyx_GOTREF(__pyx_t_7);
12469  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12470  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12471 
12472  /* "WaveTools.pyx":538
12473  *
12474  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12475  * sys.exit(1) # <<<<<<<<<<<<<<
12476  *
12477  * except:
12478  */
12479  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12480  __Pyx_GOTREF(__pyx_t_7);
12481  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12482  __Pyx_GOTREF(__pyx_t_6);
12483  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12484  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
12485  __Pyx_GOTREF(__pyx_t_7);
12486  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12487  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12488 
12489  /* "WaveTools.pyx":533
12490  * # Checking length of arrays / lists to be equal to NSpectra
12491  * try:
12492  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \ # <<<<<<<<<<<<<<
12493  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12494  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
12495  */
12496  }
12497 
12498  /* "WaveTools.pyx":532
12499  * ):
12500  * # Checking length of arrays / lists to be equal to NSpectra
12501  * try: # <<<<<<<<<<<<<<
12502  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12503  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12504  */
12505  }
12506  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
12507  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
12508  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
12509  goto __pyx_L10_try_end;
12510  __pyx_L3_error:;
12511  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
12512  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
12513 
12514  /* "WaveTools.pyx":540
12515  * sys.exit(1)
12516  *
12517  * except: # <<<<<<<<<<<<<<
12518  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12519  * sys.exit(1)
12520  */
12521  /*except:*/ {
12522  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
12523  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_6, &__pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 540; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12524  __Pyx_GOTREF(__pyx_t_7);
12525  __Pyx_GOTREF(__pyx_t_6);
12526  __Pyx_GOTREF(__pyx_t_9);
12527 
12528  /* "WaveTools.pyx":541
12529  *
12530  * except:
12531  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
12532  * sys.exit(1)
12533  * # Initialize numpy arrays for complete reconstruction
12534  */
12535  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12536  __Pyx_GOTREF(__pyx_t_10);
12537  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12538  __Pyx_GOTREF(__pyx_t_11);
12539  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12540  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12541 
12542  /* "WaveTools.pyx":542
12543  * except:
12544  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
12545  * sys.exit(1) # <<<<<<<<<<<<<<
12546  * # Initialize numpy arrays for complete reconstruction
12547  * self.Nall = 0
12548  */
12549  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12550  __Pyx_GOTREF(__pyx_t_11);
12551  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12552  __Pyx_GOTREF(__pyx_t_10);
12553  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12554  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L5_except_error;}
12555  __Pyx_GOTREF(__pyx_t_11);
12556  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12557  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12558  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12559  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12560  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12561  goto __pyx_L4_exception_handled;
12562  }
12563  __pyx_L5_except_error:;
12564 
12565  /* "WaveTools.pyx":532
12566  * ):
12567  * # Checking length of arrays / lists to be equal to NSpectra
12568  * try: # <<<<<<<<<<<<<<
12569  * if (len(Tp) != Nspectra) or (len(Hs) != Nspectra) or (len(waveDir) != Nspectra) or \
12570  * (len(N) != Nspectra) or (len(bandFactor) != Nspectra) or \
12571  */
12572  __Pyx_XGIVEREF(__pyx_t_1);
12573  __Pyx_XGIVEREF(__pyx_t_2);
12574  __Pyx_XGIVEREF(__pyx_t_3);
12575  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12576  goto __pyx_L1_error;
12577  __pyx_L4_exception_handled:;
12578  __Pyx_XGIVEREF(__pyx_t_1);
12579  __Pyx_XGIVEREF(__pyx_t_2);
12580  __Pyx_XGIVEREF(__pyx_t_3);
12581  __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
12582  __pyx_L10_try_end:;
12583  }
12584 
12585  /* "WaveTools.pyx":544
12586  * sys.exit(1)
12587  * # Initialize numpy arrays for complete reconstruction
12588  * self.Nall = 0 # <<<<<<<<<<<<<<
12589  * for nn in N:
12590  * self.Nall+=nn
12591  */
12592  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nall, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12593 
12594  /* "WaveTools.pyx":545
12595  * # Initialize numpy arrays for complete reconstruction
12596  * self.Nall = 0
12597  * for nn in N: # <<<<<<<<<<<<<<
12598  * self.Nall+=nn
12599  *
12600  */
12601  if (likely(PyList_CheckExact(__pyx_v_N)) || PyTuple_CheckExact(__pyx_v_N)) {
12602  __pyx_t_9 = __pyx_v_N; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0;
12603  __pyx_t_12 = NULL;
12604  } else {
12605  __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_v_N); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12606  __Pyx_GOTREF(__pyx_t_9);
12607  __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12608  }
12609  for (;;) {
12610  if (likely(!__pyx_t_12)) {
12611  if (likely(PyList_CheckExact(__pyx_t_9))) {
12612  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break;
12613  #if CYTHON_COMPILING_IN_CPYTHON
12614  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12615  #else
12616  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12617  __Pyx_GOTREF(__pyx_t_6);
12618  #endif
12619  } else {
12620  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
12621  #if CYTHON_COMPILING_IN_CPYTHON
12622  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12623  #else
12624  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12625  __Pyx_GOTREF(__pyx_t_6);
12626  #endif
12627  }
12628  } else {
12629  __pyx_t_6 = __pyx_t_12(__pyx_t_9);
12630  if (unlikely(!__pyx_t_6)) {
12631  PyObject* exc_type = PyErr_Occurred();
12632  if (exc_type) {
12633  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
12634  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12635  }
12636  break;
12637  }
12638  __Pyx_GOTREF(__pyx_t_6);
12639  }
12640  __Pyx_XDECREF_SET(__pyx_v_nn, __pyx_t_6);
12641  __pyx_t_6 = 0;
12642 
12643  /* "WaveTools.pyx":546
12644  * self.Nall = 0
12645  * for nn in N:
12646  * self.Nall+=nn # <<<<<<<<<<<<<<
12647  *
12648  *
12649  */
12650  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12651  __Pyx_GOTREF(__pyx_t_6);
12652  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_t_6, __pyx_v_nn); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12653  __Pyx_GOTREF(__pyx_t_7);
12654  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12655  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nall, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12656  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12657 
12658  /* "WaveTools.pyx":545
12659  * # Initialize numpy arrays for complete reconstruction
12660  * self.Nall = 0
12661  * for nn in N: # <<<<<<<<<<<<<<
12662  * self.Nall+=nn
12663  *
12664  */
12665  }
12666  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12667 
12668  /* "WaveTools.pyx":549
12669  *
12670  *
12671  * self.omegaM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12672  * self.kiM = np.zeros(self.Nall,float)
12673  * self.aiM = np.zeros(self.Nall,float)
12674  */
12675  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12676  __Pyx_GOTREF(__pyx_t_7);
12677  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12678  __Pyx_GOTREF(__pyx_t_6);
12679  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12680  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12681  __Pyx_GOTREF(__pyx_t_7);
12682  __pyx_t_11 = NULL;
12683  __pyx_t_5 = 0;
12684  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
12685  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_6);
12686  if (likely(__pyx_t_11)) {
12687  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12688  __Pyx_INCREF(__pyx_t_11);
12689  __Pyx_INCREF(function);
12690  __Pyx_DECREF_SET(__pyx_t_6, function);
12691  __pyx_t_5 = 1;
12692  }
12693  }
12694  __pyx_t_10 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12695  __Pyx_GOTREF(__pyx_t_10);
12696  if (__pyx_t_11) {
12697  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11); __pyx_t_11 = NULL;
12698  }
12699  __Pyx_GIVEREF(__pyx_t_7);
12700  PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_5, __pyx_t_7);
12701  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12702  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12703  PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12704  __pyx_t_7 = 0;
12705  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12706  __Pyx_GOTREF(__pyx_t_9);
12707  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12708  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12709  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omegaM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12710  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12711 
12712  /* "WaveTools.pyx":550
12713  *
12714  * self.omegaM = np.zeros(self.Nall,float)
12715  * self.kiM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12716  * self.aiM = np.zeros(self.Nall,float)
12717  * self.kDirM = np.zeros((self.Nall,3),float)
12718  */
12719  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12720  __Pyx_GOTREF(__pyx_t_6);
12721  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12722  __Pyx_GOTREF(__pyx_t_10);
12723  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12724  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12725  __Pyx_GOTREF(__pyx_t_6);
12726  __pyx_t_7 = NULL;
12727  __pyx_t_5 = 0;
12728  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_10))) {
12729  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
12730  if (likely(__pyx_t_7)) {
12731  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_10);
12732  __Pyx_INCREF(__pyx_t_7);
12733  __Pyx_INCREF(function);
12734  __Pyx_DECREF_SET(__pyx_t_10, function);
12735  __pyx_t_5 = 1;
12736  }
12737  }
12738  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12739  __Pyx_GOTREF(__pyx_t_11);
12740  if (__pyx_t_7) {
12741  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_7); __pyx_t_7 = NULL;
12742  }
12743  __Pyx_GIVEREF(__pyx_t_6);
12744  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_6);
12745  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12746  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12747  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12748  __pyx_t_6 = 0;
12749  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_10, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12750  __Pyx_GOTREF(__pyx_t_9);
12751  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12752  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12753  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 550; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12754  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12755 
12756  /* "WaveTools.pyx":551
12757  * self.omegaM = np.zeros(self.Nall,float)
12758  * self.kiM = np.zeros(self.Nall,float)
12759  * self.aiM = np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12760  * self.kDirM = np.zeros((self.Nall,3),float)
12761  * self.phiM= np.zeros(self.Nall,float)
12762  */
12763  __pyx_t_10 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12764  __Pyx_GOTREF(__pyx_t_10);
12765  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12766  __Pyx_GOTREF(__pyx_t_11);
12767  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
12768  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12769  __Pyx_GOTREF(__pyx_t_10);
12770  __pyx_t_6 = NULL;
12771  __pyx_t_5 = 0;
12772  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
12773  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
12774  if (likely(__pyx_t_6)) {
12775  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
12776  __Pyx_INCREF(__pyx_t_6);
12777  __Pyx_INCREF(function);
12778  __Pyx_DECREF_SET(__pyx_t_11, function);
12779  __pyx_t_5 = 1;
12780  }
12781  }
12782  __pyx_t_7 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12783  __Pyx_GOTREF(__pyx_t_7);
12784  if (__pyx_t_6) {
12785  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
12786  }
12787  __Pyx_GIVEREF(__pyx_t_10);
12788  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_5, __pyx_t_10);
12789  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12790  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12791  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12792  __pyx_t_10 = 0;
12793  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_7, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12794  __Pyx_GOTREF(__pyx_t_9);
12795  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12796  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12797  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_aiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12798  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12799 
12800  /* "WaveTools.pyx":552
12801  * self.kiM = np.zeros(self.Nall,float)
12802  * self.aiM = np.zeros(self.Nall,float)
12803  * self.kDirM = np.zeros((self.Nall,3),float) # <<<<<<<<<<<<<<
12804  * self.phiM= np.zeros(self.Nall,float)
12805  *
12806  */
12807  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12808  __Pyx_GOTREF(__pyx_t_11);
12809  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12810  __Pyx_GOTREF(__pyx_t_7);
12811  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12812  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12813  __Pyx_GOTREF(__pyx_t_11);
12814  __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12815  __Pyx_GOTREF(__pyx_t_10);
12816  __Pyx_GIVEREF(__pyx_t_11);
12817  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_11);
12818  __Pyx_INCREF(__pyx_int_3);
12819  __Pyx_GIVEREF(__pyx_int_3);
12820  PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_int_3);
12821  __pyx_t_11 = 0;
12822  __pyx_t_11 = NULL;
12823  __pyx_t_5 = 0;
12824  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
12825  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_7);
12826  if (likely(__pyx_t_11)) {
12827  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
12828  __Pyx_INCREF(__pyx_t_11);
12829  __Pyx_INCREF(function);
12830  __Pyx_DECREF_SET(__pyx_t_7, function);
12831  __pyx_t_5 = 1;
12832  }
12833  }
12834  __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12835  __Pyx_GOTREF(__pyx_t_6);
12836  if (__pyx_t_11) {
12837  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_11); __pyx_t_11 = NULL;
12838  }
12839  __Pyx_GIVEREF(__pyx_t_10);
12840  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, __pyx_t_10);
12841  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12842  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12843  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12844  __pyx_t_10 = 0;
12845  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_6, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12846  __Pyx_GOTREF(__pyx_t_9);
12847  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12848  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12849  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDirM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 552; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12850  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12851 
12852  /* "WaveTools.pyx":553
12853  * self.aiM = np.zeros(self.Nall,float)
12854  * self.kDirM = np.zeros((self.Nall,3),float)
12855  * self.phiM= np.zeros(self.Nall,float) # <<<<<<<<<<<<<<
12856  *
12857  *
12858  */
12859  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12860  __Pyx_GOTREF(__pyx_t_7);
12861  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12862  __Pyx_GOTREF(__pyx_t_6);
12863  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12864  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12865  __Pyx_GOTREF(__pyx_t_7);
12866  __pyx_t_10 = NULL;
12867  __pyx_t_5 = 0;
12868  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
12869  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_6);
12870  if (likely(__pyx_t_10)) {
12871  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
12872  __Pyx_INCREF(__pyx_t_10);
12873  __Pyx_INCREF(function);
12874  __Pyx_DECREF_SET(__pyx_t_6, function);
12875  __pyx_t_5 = 1;
12876  }
12877  }
12878  __pyx_t_11 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12879  __Pyx_GOTREF(__pyx_t_11);
12880  if (__pyx_t_10) {
12881  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_10); __pyx_t_10 = NULL;
12882  }
12883  __Pyx_GIVEREF(__pyx_t_7);
12884  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_5, __pyx_t_7);
12885  __Pyx_INCREF(((PyObject *)(&PyFloat_Type)));
12886  __Pyx_GIVEREF(((PyObject *)(&PyFloat_Type)));
12887  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_5, ((PyObject *)(&PyFloat_Type)));
12888  __pyx_t_7 = 0;
12889  __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_11, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12890  __Pyx_GOTREF(__pyx_t_9);
12891  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
12892  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12893  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiM, __pyx_t_9) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12894  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12895 
12896  /* "WaveTools.pyx":556
12897  *
12898  *
12899  * NN = 0 # <<<<<<<<<<<<<<
12900  * for kk in range(Nspectra):
12901  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
12902  */
12903  __Pyx_INCREF(__pyx_int_0);
12904  __pyx_v_NN = __pyx_int_0;
12905 
12906  /* "WaveTools.pyx":557
12907  *
12908  * NN = 0
12909  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
12910  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
12911  * NN1 = NN
12912  */
12913  __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12914  __Pyx_GOTREF(__pyx_t_9);
12915  __Pyx_INCREF(__pyx_v_Nspectra);
12916  __Pyx_GIVEREF(__pyx_v_Nspectra);
12917  PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_Nspectra);
12918  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_9, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12919  __Pyx_GOTREF(__pyx_t_6);
12920  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
12921  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
12922  __pyx_t_9 = __pyx_t_6; __Pyx_INCREF(__pyx_t_9); __pyx_t_5 = 0;
12923  __pyx_t_12 = NULL;
12924  } else {
12925  __pyx_t_5 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12926  __Pyx_GOTREF(__pyx_t_9);
12927  __pyx_t_12 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12928  }
12929  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
12930  for (;;) {
12931  if (likely(!__pyx_t_12)) {
12932  if (likely(PyList_CheckExact(__pyx_t_9))) {
12933  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_9)) break;
12934  #if CYTHON_COMPILING_IN_CPYTHON
12935  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12936  #else
12937  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12938  __Pyx_GOTREF(__pyx_t_6);
12939  #endif
12940  } else {
12941  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
12942  #if CYTHON_COMPILING_IN_CPYTHON
12943  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12944  #else
12945  __pyx_t_6 = PySequence_ITEM(__pyx_t_9, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12946  __Pyx_GOTREF(__pyx_t_6);
12947  #endif
12948  }
12949  } else {
12950  __pyx_t_6 = __pyx_t_12(__pyx_t_9);
12951  if (unlikely(!__pyx_t_6)) {
12952  PyObject* exc_type = PyErr_Occurred();
12953  if (exc_type) {
12954  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
12955  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12956  }
12957  break;
12958  }
12959  __Pyx_GOTREF(__pyx_t_6);
12960  }
12961  __Pyx_XDECREF_SET(__pyx_v_kk, __pyx_t_6);
12962  __pyx_t_6 = 0;
12963 
12964  /* "WaveTools.pyx":558
12965  * NN = 0
12966  * for kk in range(Nspectra):
12967  * logEvent("WaveTools.py: Reading spectra No %s" %kk) # <<<<<<<<<<<<<<
12968  * NN1 = NN
12969  * NN +=N[kk]
12970  */
12971  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12972  __Pyx_GOTREF(__pyx_t_11);
12973  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Reading_spectra_No, __pyx_v_kk); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12974  __Pyx_GOTREF(__pyx_t_7);
12975  __pyx_t_10 = NULL;
12976  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
12977  __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_11);
12978  if (likely(__pyx_t_10)) {
12979  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
12980  __Pyx_INCREF(__pyx_t_10);
12981  __Pyx_INCREF(function);
12982  __Pyx_DECREF_SET(__pyx_t_11, function);
12983  }
12984  }
12985  if (!__pyx_t_10) {
12986  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12987  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
12988  __Pyx_GOTREF(__pyx_t_6);
12989  } else {
12990  __pyx_t_13 = PyTuple_New(1+1); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12991  __Pyx_GOTREF(__pyx_t_13);
12992  __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_10); __pyx_t_10 = NULL;
12993  __Pyx_GIVEREF(__pyx_t_7);
12994  PyTuple_SET_ITEM(__pyx_t_13, 0+1, __pyx_t_7);
12995  __pyx_t_7 = 0;
12996  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_13, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
12997  __Pyx_GOTREF(__pyx_t_6);
12998  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
12999  }
13000  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13001  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13002 
13003  /* "WaveTools.pyx":559
13004  * for kk in range(Nspectra):
13005  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13006  * NN1 = NN # <<<<<<<<<<<<<<
13007  * NN +=N[kk]
13008  * RandomWaves.__init__(self,
13009  */
13010  __Pyx_INCREF(__pyx_v_NN);
13011  __Pyx_XDECREF_SET(__pyx_v_NN1, __pyx_v_NN);
13012 
13013  /* "WaveTools.pyx":560
13014  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13015  * NN1 = NN
13016  * NN +=N[kk] # <<<<<<<<<<<<<<
13017  * RandomWaves.__init__(self,
13018  * Tp[kk], # np array with
13019  */
13020  __pyx_t_6 = PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13021  __Pyx_GOTREF(__pyx_t_6);
13022  __pyx_t_11 = PyNumber_InPlaceAdd(__pyx_v_NN, __pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13023  __Pyx_GOTREF(__pyx_t_11);
13024  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13025  __Pyx_DECREF_SET(__pyx_v_NN, __pyx_t_11);
13026  __pyx_t_11 = 0;
13027 
13028  /* "WaveTools.pyx":561
13029  * NN1 = NN
13030  * NN +=N[kk]
13031  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
13032  * Tp[kk], # np array with
13033  * Hs[kk],
13034  */
13035  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13036  __Pyx_GOTREF(__pyx_t_6);
13037  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_init); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13038  __Pyx_GOTREF(__pyx_t_13);
13039  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13040 
13041  /* "WaveTools.pyx":562
13042  * NN +=N[kk]
13043  * RandomWaves.__init__(self,
13044  * Tp[kk], # np array with # <<<<<<<<<<<<<<
13045  * Hs[kk],
13046  * mwl,#m significant wave height
13047  */
13048  __pyx_t_6 = PyObject_GetItem(__pyx_v_Tp, __pyx_v_kk); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 562; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13049  __Pyx_GOTREF(__pyx_t_6);
13050 
13051  /* "WaveTools.pyx":563
13052  * RandomWaves.__init__(self,
13053  * Tp[kk], # np array with
13054  * Hs[kk], # <<<<<<<<<<<<<<
13055  * mwl,#m significant wave height
13056  * depth, #m depth
13057  */
13058  __pyx_t_7 = PyObject_GetItem(__pyx_v_Hs, __pyx_v_kk); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13059  __Pyx_GOTREF(__pyx_t_7);
13060 
13061  /* "WaveTools.pyx":566
13062  * mwl,#m significant wave height
13063  * depth, #m depth
13064  * waveDir[kk], # <<<<<<<<<<<<<<
13065  * g, #peak frequency
13066  * N[kk],
13067  */
13068  __pyx_t_10 = PyObject_GetItem(__pyx_v_waveDir, __pyx_v_kk); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13069  __Pyx_GOTREF(__pyx_t_10);
13070 
13071  /* "WaveTools.pyx":568
13072  * waveDir[kk],
13073  * g, #peak frequency
13074  * N[kk], # <<<<<<<<<<<<<<
13075  * bandFactor[kk], #accelerationof gravity
13076  * spectName[kk],# random words will result in error and return the available spectra
13077  */
13078  __pyx_t_14 = PyObject_GetItem(__pyx_v_N, __pyx_v_kk); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13079  __Pyx_GOTREF(__pyx_t_14);
13080 
13081  /* "WaveTools.pyx":569
13082  * g, #peak frequency
13083  * N[kk],
13084  * bandFactor[kk], #accelerationof gravity # <<<<<<<<<<<<<<
13085  * spectName[kk],# random words will result in error and return the available spectra
13086  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13087  */
13088  __pyx_t_15 = PyObject_GetItem(__pyx_v_bandFactor, __pyx_v_kk); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13089  __Pyx_GOTREF(__pyx_t_15);
13090 
13091  /* "WaveTools.pyx":570
13092  * N[kk],
13093  * bandFactor[kk], #accelerationof gravity
13094  * spectName[kk],# random words will result in error and return the available spectra # <<<<<<<<<<<<<<
13095  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13096  * phi[kk]
13097  */
13098  __pyx_t_16 = PyObject_GetItem(__pyx_v_spectName, __pyx_v_kk); if (unlikely(__pyx_t_16 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13099  __Pyx_GOTREF(__pyx_t_16);
13100 
13101  /* "WaveTools.pyx":571
13102  * bandFactor[kk], #accelerationof gravity
13103  * spectName[kk],# random words will result in error and return the available spectra
13104  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
13105  * phi[kk]
13106  * )
13107  */
13108  __pyx_t_17 = PyObject_GetItem(__pyx_v_spectral_params, __pyx_v_kk); if (unlikely(__pyx_t_17 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13109  __Pyx_GOTREF(__pyx_t_17);
13110 
13111  /* "WaveTools.pyx":572
13112  * spectName[kk],# random words will result in error and return the available spectra
13113  * spectral_params[kk], #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13114  * phi[kk] # <<<<<<<<<<<<<<
13115  * )
13116  * self.omegaM[NN1:NN] = self.omega
13117  */
13118  __pyx_t_18 = PyObject_GetItem(__pyx_v_phi, __pyx_v_kk); if (unlikely(__pyx_t_18 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13119  __Pyx_GOTREF(__pyx_t_18);
13120  __pyx_t_19 = NULL;
13121  __pyx_t_20 = 0;
13122  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_13))) {
13123  __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_13);
13124  if (likely(__pyx_t_19)) {
13125  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_13);
13126  __Pyx_INCREF(__pyx_t_19);
13127  __Pyx_INCREF(function);
13128  __Pyx_DECREF_SET(__pyx_t_13, function);
13129  __pyx_t_20 = 1;
13130  }
13131  }
13132  __pyx_t_21 = PyTuple_New(12+__pyx_t_20); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13133  __Pyx_GOTREF(__pyx_t_21);
13134  if (__pyx_t_19) {
13135  __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_21, 0, __pyx_t_19); __pyx_t_19 = NULL;
13136  }
13137  __Pyx_INCREF(__pyx_v_self);
13138  __Pyx_GIVEREF(__pyx_v_self);
13139  PyTuple_SET_ITEM(__pyx_t_21, 0+__pyx_t_20, __pyx_v_self);
13140  __Pyx_GIVEREF(__pyx_t_6);
13141  PyTuple_SET_ITEM(__pyx_t_21, 1+__pyx_t_20, __pyx_t_6);
13142  __Pyx_GIVEREF(__pyx_t_7);
13143  PyTuple_SET_ITEM(__pyx_t_21, 2+__pyx_t_20, __pyx_t_7);
13144  __Pyx_INCREF(__pyx_v_mwl);
13145  __Pyx_GIVEREF(__pyx_v_mwl);
13146  PyTuple_SET_ITEM(__pyx_t_21, 3+__pyx_t_20, __pyx_v_mwl);
13147  __Pyx_INCREF(__pyx_v_depth);
13148  __Pyx_GIVEREF(__pyx_v_depth);
13149  PyTuple_SET_ITEM(__pyx_t_21, 4+__pyx_t_20, __pyx_v_depth);
13150  __Pyx_GIVEREF(__pyx_t_10);
13151  PyTuple_SET_ITEM(__pyx_t_21, 5+__pyx_t_20, __pyx_t_10);
13152  __Pyx_INCREF(__pyx_v_g);
13153  __Pyx_GIVEREF(__pyx_v_g);
13154  PyTuple_SET_ITEM(__pyx_t_21, 6+__pyx_t_20, __pyx_v_g);
13155  __Pyx_GIVEREF(__pyx_t_14);
13156  PyTuple_SET_ITEM(__pyx_t_21, 7+__pyx_t_20, __pyx_t_14);
13157  __Pyx_GIVEREF(__pyx_t_15);
13158  PyTuple_SET_ITEM(__pyx_t_21, 8+__pyx_t_20, __pyx_t_15);
13159  __Pyx_GIVEREF(__pyx_t_16);
13160  PyTuple_SET_ITEM(__pyx_t_21, 9+__pyx_t_20, __pyx_t_16);
13161  __Pyx_GIVEREF(__pyx_t_17);
13162  PyTuple_SET_ITEM(__pyx_t_21, 10+__pyx_t_20, __pyx_t_17);
13163  __Pyx_GIVEREF(__pyx_t_18);
13164  PyTuple_SET_ITEM(__pyx_t_21, 11+__pyx_t_20, __pyx_t_18);
13165  __pyx_t_6 = 0;
13166  __pyx_t_7 = 0;
13167  __pyx_t_10 = 0;
13168  __pyx_t_14 = 0;
13169  __pyx_t_15 = 0;
13170  __pyx_t_16 = 0;
13171  __pyx_t_17 = 0;
13172  __pyx_t_18 = 0;
13173  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_13, __pyx_t_21, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 561; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13174  __Pyx_GOTREF(__pyx_t_11);
13175  __Pyx_DECREF(__pyx_t_21); __pyx_t_21 = 0;
13176  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13177  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13178 
13179  /* "WaveTools.pyx":574
13180  * phi[kk]
13181  * )
13182  * self.omegaM[NN1:NN] = self.omega # <<<<<<<<<<<<<<
13183  * self.kiM[NN1:NN] = self.ki
13184  * self.aiM[NN1:NN] = self.ai
13185  */
13186  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13187  __Pyx_GOTREF(__pyx_t_11);
13188  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13189  __Pyx_GOTREF(__pyx_t_13);
13190  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 574; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13191  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13192  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13193 
13194  /* "WaveTools.pyx":575
13195  * )
13196  * self.omegaM[NN1:NN] = self.omega
13197  * self.kiM[NN1:NN] = self.ki # <<<<<<<<<<<<<<
13198  * self.aiM[NN1:NN] = self.ai
13199  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13200  */
13201  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13202  __Pyx_GOTREF(__pyx_t_11);
13203  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kiM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13204  __Pyx_GOTREF(__pyx_t_13);
13205  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13206  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13207  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13208 
13209  /* "WaveTools.pyx":576
13210  * self.omegaM[NN1:NN] = self.omega
13211  * self.kiM[NN1:NN] = self.ki
13212  * self.aiM[NN1:NN] = self.ai # <<<<<<<<<<<<<<
13213  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13214  * self.phiM[NN1:NN] = self.phi
13215  */
13216  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13217  __Pyx_GOTREF(__pyx_t_11);
13218  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13219  __Pyx_GOTREF(__pyx_t_13);
13220  if (__Pyx_PyObject_SetSlice(__pyx_t_13, __pyx_t_11, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13221  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13222  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13223 
13224  /* "WaveTools.pyx":577
13225  * self.kiM[NN1:NN] = self.ki
13226  * self.aiM[NN1:NN] = self.ai
13227  * self.kDirM[NN1:NN,:] =self.kDir[:,:] # <<<<<<<<<<<<<<
13228  * self.phiM[NN1:NN] = self.phi
13229  *
13230  */
13231  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13232  __Pyx_GOTREF(__pyx_t_11);
13233  __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_tuple__58); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13234  __Pyx_GOTREF(__pyx_t_13);
13235  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13236  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13237  __Pyx_GOTREF(__pyx_t_11);
13238  __pyx_t_21 = PySlice_New(__pyx_v_NN1, __pyx_v_NN, Py_None); if (unlikely(!__pyx_t_21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13239  __Pyx_GOTREF(__pyx_t_21);
13240  __pyx_t_18 = PyTuple_New(2); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13241  __Pyx_GOTREF(__pyx_t_18);
13242  __Pyx_GIVEREF(__pyx_t_21);
13243  PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_21);
13244  __Pyx_INCREF(__pyx_slice__59);
13245  __Pyx_GIVEREF(__pyx_slice__59);
13246  PyTuple_SET_ITEM(__pyx_t_18, 1, __pyx_slice__59);
13247  __pyx_t_21 = 0;
13248  if (unlikely(PyObject_SetItem(__pyx_t_11, __pyx_t_18, __pyx_t_13) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13249  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
13250  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
13251  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13252 
13253  /* "WaveTools.pyx":578
13254  * self.aiM[NN1:NN] = self.ai
13255  * self.kDirM[NN1:NN,:] =self.kDir[:,:]
13256  * self.phiM[NN1:NN] = self.phi # <<<<<<<<<<<<<<
13257  *
13258  *
13259  */
13260  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13261  __Pyx_GOTREF(__pyx_t_13);
13262  __pyx_t_18 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13263  __Pyx_GOTREF(__pyx_t_18);
13264  if (__Pyx_PyObject_SetSlice(__pyx_t_18, __pyx_t_13, 0, 0, &__pyx_v_NN1, &__pyx_v_NN, NULL, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 578; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13265  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
13266  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
13267 
13268  /* "WaveTools.pyx":557
13269  *
13270  * NN = 0
13271  * for kk in range(Nspectra): # <<<<<<<<<<<<<<
13272  * logEvent("WaveTools.py: Reading spectra No %s" %kk)
13273  * NN1 = NN
13274  */
13275  }
13276  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
13277 
13278  /* "WaveTools.pyx":517
13279  * :param Nspectra, number of spectra
13280  * """
13281  * def __init__(self, # <<<<<<<<<<<<<<
13282  * Nspectra,
13283  * Tp, # np array with
13284  */
13285 
13286  /* function exit code */
13287  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
13288  goto __pyx_L0;
13289  __pyx_L1_error:;
13290  __Pyx_XDECREF(__pyx_t_6);
13291  __Pyx_XDECREF(__pyx_t_7);
13292  __Pyx_XDECREF(__pyx_t_9);
13293  __Pyx_XDECREF(__pyx_t_10);
13294  __Pyx_XDECREF(__pyx_t_11);
13295  __Pyx_XDECREF(__pyx_t_13);
13296  __Pyx_XDECREF(__pyx_t_14);
13297  __Pyx_XDECREF(__pyx_t_15);
13298  __Pyx_XDECREF(__pyx_t_16);
13299  __Pyx_XDECREF(__pyx_t_17);
13300  __Pyx_XDECREF(__pyx_t_18);
13301  __Pyx_XDECREF(__pyx_t_19);
13302  __Pyx_XDECREF(__pyx_t_21);
13303  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
13304  __pyx_r = NULL;
13305  __pyx_L0:;
13306  __Pyx_XDECREF(__pyx_v_nn);
13307  __Pyx_XDECREF(__pyx_v_NN);
13308  __Pyx_XDECREF(__pyx_v_kk);
13309  __Pyx_XDECREF(__pyx_v_NN1);
13310  __Pyx_XGIVEREF(__pyx_r);
13311  __Pyx_RefNannyFinishContext();
13312  return __pyx_r;
13313 }
13314 
13315 /* "WaveTools.pyx":581
13316  *
13317  *
13318  * def eta(self, x, t): # <<<<<<<<<<<<<<
13319  * """Free surface displacement
13320  *
13321  */
13322 
13323 /* Python wrapper */
13324 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13325 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta[] = "MultiSpectraRandomWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
13326 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_2eta};
13327 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13328  PyObject *__pyx_v_self = 0;
13329  PyObject *__pyx_v_x = 0;
13330  PyObject *__pyx_v_t = 0;
13331  int __pyx_lineno = 0;
13332  const char *__pyx_filename = NULL;
13333  int __pyx_clineno = 0;
13334  PyObject *__pyx_r = 0;
13335  __Pyx_RefNannyDeclarations
13336  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
13337  {
13338  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
13339  PyObject* values[3] = {0,0,0};
13340  if (unlikely(__pyx_kwds)) {
13341  Py_ssize_t kw_args;
13342  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13343  switch (pos_args) {
13344  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13345  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13346  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13347  case 0: break;
13348  default: goto __pyx_L5_argtuple_error;
13349  }
13350  kw_args = PyDict_Size(__pyx_kwds);
13351  switch (pos_args) {
13352  case 0:
13353  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
13354  else goto __pyx_L5_argtuple_error;
13355  case 1:
13356  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13357  else {
13358  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13359  }
13360  case 2:
13361  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13362  else {
13363  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13364  }
13365  }
13366  if (unlikely(kw_args > 0)) {
13367  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13368  }
13369  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
13370  goto __pyx_L5_argtuple_error;
13371  } else {
13372  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13373  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13374  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13375  }
13376  __pyx_v_self = values[0];
13377  __pyx_v_x = values[1];
13378  __pyx_v_t = values[2];
13379  }
13380  goto __pyx_L4_argument_unpacking_done;
13381  __pyx_L5_argtuple_error:;
13382  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13383  __pyx_L3_error:;
13384  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
13385  __Pyx_RefNannyFinishContext();
13386  return NULL;
13387  __pyx_L4_argument_unpacking_done:;
13388  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
13389 
13390  /* function exit code */
13391  __Pyx_RefNannyFinishContext();
13392  return __pyx_r;
13393 }
13394 
13395 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
13396  PyObject *__pyx_v_Eta = NULL;
13397  PyObject *__pyx_v_ii = NULL;
13398  PyObject *__pyx_r = NULL;
13399  __Pyx_RefNannyDeclarations
13400  PyObject *__pyx_t_1 = NULL;
13401  PyObject *__pyx_t_2 = NULL;
13402  Py_ssize_t __pyx_t_3;
13403  PyObject *(*__pyx_t_4)(PyObject *);
13404  PyObject *__pyx_t_5 = NULL;
13405  PyObject *__pyx_t_6 = NULL;
13406  PyObject *__pyx_t_7 = NULL;
13407  PyObject *__pyx_t_8 = NULL;
13408  PyObject *__pyx_t_9 = NULL;
13409  PyObject *__pyx_t_10 = NULL;
13410  Py_ssize_t __pyx_t_11;
13411  PyObject *__pyx_t_12 = NULL;
13412  int __pyx_lineno = 0;
13413  const char *__pyx_filename = NULL;
13414  int __pyx_clineno = 0;
13415  __Pyx_RefNannySetupContext("eta", 0);
13416 
13417  /* "WaveTools.pyx":586
13418  * :param x: floating point x coordinate
13419  * :param t: time"""
13420  * Eta=0. # <<<<<<<<<<<<<<
13421  * for ii in range(self.Nall):
13422  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13423  */
13424  __Pyx_INCREF(__pyx_float_0_);
13425  __pyx_v_Eta = __pyx_float_0_;
13426 
13427  /* "WaveTools.pyx":587
13428  * :param t: time"""
13429  * Eta=0.
13430  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13431  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13432  * return Eta
13433  */
13434  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13435  __Pyx_GOTREF(__pyx_t_1);
13436  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13437  __Pyx_GOTREF(__pyx_t_2);
13438  __Pyx_GIVEREF(__pyx_t_1);
13439  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
13440  __pyx_t_1 = 0;
13441  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13442  __Pyx_GOTREF(__pyx_t_1);
13443  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13444  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
13445  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
13446  __pyx_t_4 = NULL;
13447  } else {
13448  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13449  __Pyx_GOTREF(__pyx_t_2);
13450  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13451  }
13452  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13453  for (;;) {
13454  if (likely(!__pyx_t_4)) {
13455  if (likely(PyList_CheckExact(__pyx_t_2))) {
13456  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
13457  #if CYTHON_COMPILING_IN_CPYTHON
13458  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13459  #else
13460  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13461  __Pyx_GOTREF(__pyx_t_1);
13462  #endif
13463  } else {
13464  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
13465  #if CYTHON_COMPILING_IN_CPYTHON
13466  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13467  #else
13468  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13469  __Pyx_GOTREF(__pyx_t_1);
13470  #endif
13471  }
13472  } else {
13473  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
13474  if (unlikely(!__pyx_t_1)) {
13475  PyObject* exc_type = PyErr_Occurred();
13476  if (exc_type) {
13477  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
13478  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13479  }
13480  break;
13481  }
13482  __Pyx_GOTREF(__pyx_t_1);
13483  }
13484  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
13485  __pyx_t_1 = 0;
13486 
13487  /* "WaveTools.pyx":588
13488  * Eta=0.
13489  * for ii in range(self.Nall):
13490  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii]) # <<<<<<<<<<<<<<
13491  * return Eta
13492  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13493  */
13494  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13495  __Pyx_GOTREF(__pyx_t_5);
13496  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13497  __Pyx_GOTREF(__pyx_t_6);
13498  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13499  __Pyx_GOTREF(__pyx_t_7);
13500  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13501  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13502  __Pyx_GOTREF(__pyx_t_6);
13503  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13504  __Pyx_GOTREF(__pyx_t_8);
13505  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13506  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13507  __Pyx_GOTREF(__pyx_t_6);
13508  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13509  __Pyx_GOTREF(__pyx_t_9);
13510  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13511  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13512  __Pyx_GOTREF(__pyx_t_6);
13513  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13514  __Pyx_GOTREF(__pyx_t_10);
13515  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13516  __pyx_t_6 = NULL;
13517  __pyx_t_11 = 0;
13518  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
13519  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
13520  if (likely(__pyx_t_6)) {
13521  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
13522  __Pyx_INCREF(__pyx_t_6);
13523  __Pyx_INCREF(function);
13524  __Pyx_DECREF_SET(__pyx_t_5, function);
13525  __pyx_t_11 = 1;
13526  }
13527  }
13528  __pyx_t_12 = PyTuple_New(6+__pyx_t_11); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13529  __Pyx_GOTREF(__pyx_t_12);
13530  if (__pyx_t_6) {
13531  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_6); __pyx_t_6 = NULL;
13532  }
13533  __Pyx_INCREF(__pyx_v_x);
13534  __Pyx_GIVEREF(__pyx_v_x);
13535  PyTuple_SET_ITEM(__pyx_t_12, 0+__pyx_t_11, __pyx_v_x);
13536  __Pyx_INCREF(__pyx_v_t);
13537  __Pyx_GIVEREF(__pyx_v_t);
13538  PyTuple_SET_ITEM(__pyx_t_12, 1+__pyx_t_11, __pyx_v_t);
13539  __Pyx_GIVEREF(__pyx_t_7);
13540  PyTuple_SET_ITEM(__pyx_t_12, 2+__pyx_t_11, __pyx_t_7);
13541  __Pyx_GIVEREF(__pyx_t_8);
13542  PyTuple_SET_ITEM(__pyx_t_12, 3+__pyx_t_11, __pyx_t_8);
13543  __Pyx_GIVEREF(__pyx_t_9);
13544  PyTuple_SET_ITEM(__pyx_t_12, 4+__pyx_t_11, __pyx_t_9);
13545  __Pyx_GIVEREF(__pyx_t_10);
13546  PyTuple_SET_ITEM(__pyx_t_12, 5+__pyx_t_11, __pyx_t_10);
13547  __pyx_t_7 = 0;
13548  __pyx_t_8 = 0;
13549  __pyx_t_9 = 0;
13550  __pyx_t_10 = 0;
13551  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_12, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13552  __Pyx_GOTREF(__pyx_t_1);
13553  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
13554  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13555  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 588; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13556  __Pyx_GOTREF(__pyx_t_5);
13557  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13558  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_5);
13559  __pyx_t_5 = 0;
13560 
13561  /* "WaveTools.pyx":587
13562  * :param t: time"""
13563  * Eta=0.
13564  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13565  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13566  * return Eta
13567  */
13568  }
13569  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13570 
13571  /* "WaveTools.pyx":589
13572  * for ii in range(self.Nall):
13573  * Eta+= eta_mode(x, t, self.kDirM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii])
13574  * return Eta # <<<<<<<<<<<<<<
13575  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13576  *
13577  */
13578  __Pyx_XDECREF(__pyx_r);
13579  __Pyx_INCREF(__pyx_v_Eta);
13580  __pyx_r = __pyx_v_Eta;
13581  goto __pyx_L0;
13582 
13583  /* "WaveTools.pyx":581
13584  *
13585  *
13586  * def eta(self, x, t): # <<<<<<<<<<<<<<
13587  * """Free surface displacement
13588  *
13589  */
13590 
13591  /* function exit code */
13592  __pyx_L1_error:;
13593  __Pyx_XDECREF(__pyx_t_1);
13594  __Pyx_XDECREF(__pyx_t_2);
13595  __Pyx_XDECREF(__pyx_t_5);
13596  __Pyx_XDECREF(__pyx_t_6);
13597  __Pyx_XDECREF(__pyx_t_7);
13598  __Pyx_XDECREF(__pyx_t_8);
13599  __Pyx_XDECREF(__pyx_t_9);
13600  __Pyx_XDECREF(__pyx_t_10);
13601  __Pyx_XDECREF(__pyx_t_12);
13602  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
13603  __pyx_r = NULL;
13604  __pyx_L0:;
13605  __Pyx_XDECREF(__pyx_v_Eta);
13606  __Pyx_XDECREF(__pyx_v_ii);
13607  __Pyx_XGIVEREF(__pyx_r);
13608  __Pyx_RefNannyFinishContext();
13609  return __pyx_r;
13610 }
13611 
13612 /* "WaveTools.pyx":592
13613  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13614  *
13615  * def u(self, x, t): # <<<<<<<<<<<<<<
13616  * """x-component of velocity
13617  *
13618  */
13619 
13620 /* Python wrapper */
13621 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13622 static char __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u[] = "MultiSpectraRandomWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
13623 static PyMethodDef __pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_23MultiSpectraRandomWaves_4u};
13624 static PyObject *__pyx_pw_9WaveTools_23MultiSpectraRandomWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13625  PyObject *__pyx_v_self = 0;
13626  PyObject *__pyx_v_x = 0;
13627  PyObject *__pyx_v_t = 0;
13628  int __pyx_lineno = 0;
13629  const char *__pyx_filename = NULL;
13630  int __pyx_clineno = 0;
13631  PyObject *__pyx_r = 0;
13632  __Pyx_RefNannyDeclarations
13633  __Pyx_RefNannySetupContext("u (wrapper)", 0);
13634  {
13635  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
13636  PyObject* values[3] = {0,0,0};
13637  if (unlikely(__pyx_kwds)) {
13638  Py_ssize_t kw_args;
13639  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
13640  switch (pos_args) {
13641  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13642  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13643  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13644  case 0: break;
13645  default: goto __pyx_L5_argtuple_error;
13646  }
13647  kw_args = PyDict_Size(__pyx_kwds);
13648  switch (pos_args) {
13649  case 0:
13650  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
13651  else goto __pyx_L5_argtuple_error;
13652  case 1:
13653  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
13654  else {
13655  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13656  }
13657  case 2:
13658  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
13659  else {
13660  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13661  }
13662  }
13663  if (unlikely(kw_args > 0)) {
13664  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13665  }
13666  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
13667  goto __pyx_L5_argtuple_error;
13668  } else {
13669  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
13670  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
13671  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
13672  }
13673  __pyx_v_self = values[0];
13674  __pyx_v_x = values[1];
13675  __pyx_v_t = values[2];
13676  }
13677  goto __pyx_L4_argument_unpacking_done;
13678  __pyx_L5_argtuple_error:;
13679  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
13680  __pyx_L3_error:;
13681  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13682  __Pyx_RefNannyFinishContext();
13683  return NULL;
13684  __pyx_L4_argument_unpacking_done:;
13685  __pyx_r = __pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
13686 
13687  /* function exit code */
13688  __Pyx_RefNannyFinishContext();
13689  return __pyx_r;
13690 }
13691 
13692 static PyObject *__pyx_pf_9WaveTools_23MultiSpectraRandomWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
13693  PyObject *__pyx_v_U = NULL;
13694  PyObject *__pyx_v_ii = NULL;
13695  PyObject *__pyx_r = NULL;
13696  __Pyx_RefNannyDeclarations
13697  PyObject *__pyx_t_1 = NULL;
13698  PyObject *__pyx_t_2 = NULL;
13699  Py_ssize_t __pyx_t_3;
13700  PyObject *(*__pyx_t_4)(PyObject *);
13701  PyObject *__pyx_t_5 = NULL;
13702  PyObject *__pyx_t_6 = NULL;
13703  PyObject *__pyx_t_7 = NULL;
13704  PyObject *__pyx_t_8 = NULL;
13705  PyObject *__pyx_t_9 = NULL;
13706  PyObject *__pyx_t_10 = NULL;
13707  PyObject *__pyx_t_11 = NULL;
13708  PyObject *__pyx_t_12 = NULL;
13709  PyObject *__pyx_t_13 = NULL;
13710  PyObject *__pyx_t_14 = NULL;
13711  PyObject *__pyx_t_15 = NULL;
13712  Py_ssize_t __pyx_t_16;
13713  PyObject *__pyx_t_17 = NULL;
13714  int __pyx_lineno = 0;
13715  const char *__pyx_filename = NULL;
13716  int __pyx_clineno = 0;
13717  __Pyx_RefNannySetupContext("u", 0);
13718 
13719  /* "WaveTools.pyx":599
13720  * :param t: time
13721  * """
13722  * U=0. # <<<<<<<<<<<<<<
13723  * for ii in range(self.Nall):
13724  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13725  */
13726  __Pyx_INCREF(__pyx_float_0_);
13727  __pyx_v_U = __pyx_float_0_;
13728 
13729  /* "WaveTools.pyx":600
13730  * """
13731  * U=0.
13732  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13733  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13734  * return U
13735  */
13736  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nall); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13737  __Pyx_GOTREF(__pyx_t_1);
13738  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13739  __Pyx_GOTREF(__pyx_t_2);
13740  __Pyx_GIVEREF(__pyx_t_1);
13741  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
13742  __pyx_t_1 = 0;
13743  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13744  __Pyx_GOTREF(__pyx_t_1);
13745  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13746  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
13747  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
13748  __pyx_t_4 = NULL;
13749  } else {
13750  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13751  __Pyx_GOTREF(__pyx_t_2);
13752  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13753  }
13754  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13755  for (;;) {
13756  if (likely(!__pyx_t_4)) {
13757  if (likely(PyList_CheckExact(__pyx_t_2))) {
13758  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
13759  #if CYTHON_COMPILING_IN_CPYTHON
13760  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13761  #else
13762  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13763  __Pyx_GOTREF(__pyx_t_1);
13764  #endif
13765  } else {
13766  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
13767  #if CYTHON_COMPILING_IN_CPYTHON
13768  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13769  #else
13770  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13771  __Pyx_GOTREF(__pyx_t_1);
13772  #endif
13773  }
13774  } else {
13775  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
13776  if (unlikely(!__pyx_t_1)) {
13777  PyObject* exc_type = PyErr_Occurred();
13778  if (exc_type) {
13779  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
13780  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 600; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13781  }
13782  break;
13783  }
13784  __Pyx_GOTREF(__pyx_t_1);
13785  }
13786  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
13787  __pyx_t_1 = 0;
13788 
13789  /* "WaveTools.pyx":601
13790  * U=0.
13791  * for ii in range(self.Nall):
13792  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
13793  * return U
13794  *
13795  */
13796  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13797  __Pyx_GOTREF(__pyx_t_5);
13798  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDirM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13799  __Pyx_GOTREF(__pyx_t_6);
13800  __pyx_t_7 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13801  __Pyx_GOTREF(__pyx_t_7);
13802  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13803  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13804  __Pyx_GOTREF(__pyx_t_6);
13805  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13806  __Pyx_GOTREF(__pyx_t_8);
13807  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13808  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omegaM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13809  __Pyx_GOTREF(__pyx_t_6);
13810  __pyx_t_9 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13811  __Pyx_GOTREF(__pyx_t_9);
13812  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13813  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13814  __Pyx_GOTREF(__pyx_t_6);
13815  __pyx_t_10 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13816  __Pyx_GOTREF(__pyx_t_10);
13817  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13818  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiM); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13819  __Pyx_GOTREF(__pyx_t_6);
13820  __pyx_t_11 = PyObject_GetItem(__pyx_t_6, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
13821  __Pyx_GOTREF(__pyx_t_11);
13822  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
13823  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13824  __Pyx_GOTREF(__pyx_t_6);
13825  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13826  __Pyx_GOTREF(__pyx_t_12);
13827  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13828  __Pyx_GOTREF(__pyx_t_13);
13829  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13830  __Pyx_GOTREF(__pyx_t_14);
13831  __pyx_t_15 = NULL;
13832  __pyx_t_16 = 0;
13833  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
13834  __pyx_t_15 = PyMethod_GET_SELF(__pyx_t_5);
13835  if (likely(__pyx_t_15)) {
13836  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
13837  __Pyx_INCREF(__pyx_t_15);
13838  __Pyx_INCREF(function);
13839  __Pyx_DECREF_SET(__pyx_t_5, function);
13840  __pyx_t_16 = 1;
13841  }
13842  }
13843  __pyx_t_17 = PyTuple_New(11+__pyx_t_16); if (unlikely(!__pyx_t_17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13844  __Pyx_GOTREF(__pyx_t_17);
13845  if (__pyx_t_15) {
13846  __Pyx_GIVEREF(__pyx_t_15); PyTuple_SET_ITEM(__pyx_t_17, 0, __pyx_t_15); __pyx_t_15 = NULL;
13847  }
13848  __Pyx_INCREF(__pyx_v_x);
13849  __Pyx_GIVEREF(__pyx_v_x);
13850  PyTuple_SET_ITEM(__pyx_t_17, 0+__pyx_t_16, __pyx_v_x);
13851  __Pyx_INCREF(__pyx_v_t);
13852  __Pyx_GIVEREF(__pyx_v_t);
13853  PyTuple_SET_ITEM(__pyx_t_17, 1+__pyx_t_16, __pyx_v_t);
13854  __Pyx_GIVEREF(__pyx_t_7);
13855  PyTuple_SET_ITEM(__pyx_t_17, 2+__pyx_t_16, __pyx_t_7);
13856  __Pyx_GIVEREF(__pyx_t_8);
13857  PyTuple_SET_ITEM(__pyx_t_17, 3+__pyx_t_16, __pyx_t_8);
13858  __Pyx_GIVEREF(__pyx_t_9);
13859  PyTuple_SET_ITEM(__pyx_t_17, 4+__pyx_t_16, __pyx_t_9);
13860  __Pyx_GIVEREF(__pyx_t_10);
13861  PyTuple_SET_ITEM(__pyx_t_17, 5+__pyx_t_16, __pyx_t_10);
13862  __Pyx_GIVEREF(__pyx_t_11);
13863  PyTuple_SET_ITEM(__pyx_t_17, 6+__pyx_t_16, __pyx_t_11);
13864  __Pyx_GIVEREF(__pyx_t_6);
13865  PyTuple_SET_ITEM(__pyx_t_17, 7+__pyx_t_16, __pyx_t_6);
13866  __Pyx_GIVEREF(__pyx_t_12);
13867  PyTuple_SET_ITEM(__pyx_t_17, 8+__pyx_t_16, __pyx_t_12);
13868  __Pyx_GIVEREF(__pyx_t_13);
13869  PyTuple_SET_ITEM(__pyx_t_17, 9+__pyx_t_16, __pyx_t_13);
13870  __Pyx_GIVEREF(__pyx_t_14);
13871  PyTuple_SET_ITEM(__pyx_t_17, 10+__pyx_t_16, __pyx_t_14);
13872  __pyx_t_7 = 0;
13873  __pyx_t_8 = 0;
13874  __pyx_t_9 = 0;
13875  __pyx_t_10 = 0;
13876  __pyx_t_11 = 0;
13877  __pyx_t_6 = 0;
13878  __pyx_t_12 = 0;
13879  __pyx_t_13 = 0;
13880  __pyx_t_14 = 0;
13881  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13882  __Pyx_GOTREF(__pyx_t_1);
13883  __Pyx_DECREF(__pyx_t_17); __pyx_t_17 = 0;
13884  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
13885  __pyx_t_5 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
13886  __Pyx_GOTREF(__pyx_t_5);
13887  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
13888  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_5);
13889  __pyx_t_5 = 0;
13890 
13891  /* "WaveTools.pyx":600
13892  * """
13893  * U=0.
13894  * for ii in range(self.Nall): # <<<<<<<<<<<<<<
13895  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13896  * return U
13897  */
13898  }
13899  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
13900 
13901  /* "WaveTools.pyx":602
13902  * for ii in range(self.Nall):
13903  * U+= vel_mode(x,t,self.kDirM[ii], self.kiM[ii],self.omegaM[ii],self.phiM[ii],self.aiM[ii],self.mwl,self.depth,self.g,self.vDir)
13904  * return U # <<<<<<<<<<<<<<
13905  *
13906  *
13907  */
13908  __Pyx_XDECREF(__pyx_r);
13909  __Pyx_INCREF(__pyx_v_U);
13910  __pyx_r = __pyx_v_U;
13911  goto __pyx_L0;
13912 
13913  /* "WaveTools.pyx":592
13914  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
13915  *
13916  * def u(self, x, t): # <<<<<<<<<<<<<<
13917  * """x-component of velocity
13918  *
13919  */
13920 
13921  /* function exit code */
13922  __pyx_L1_error:;
13923  __Pyx_XDECREF(__pyx_t_1);
13924  __Pyx_XDECREF(__pyx_t_2);
13925  __Pyx_XDECREF(__pyx_t_5);
13926  __Pyx_XDECREF(__pyx_t_6);
13927  __Pyx_XDECREF(__pyx_t_7);
13928  __Pyx_XDECREF(__pyx_t_8);
13929  __Pyx_XDECREF(__pyx_t_9);
13930  __Pyx_XDECREF(__pyx_t_10);
13931  __Pyx_XDECREF(__pyx_t_11);
13932  __Pyx_XDECREF(__pyx_t_12);
13933  __Pyx_XDECREF(__pyx_t_13);
13934  __Pyx_XDECREF(__pyx_t_14);
13935  __Pyx_XDECREF(__pyx_t_15);
13936  __Pyx_XDECREF(__pyx_t_17);
13937  __Pyx_AddTraceback("WaveTools.MultiSpectraRandomWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
13938  __pyx_r = NULL;
13939  __pyx_L0:;
13940  __Pyx_XDECREF(__pyx_v_U);
13941  __Pyx_XDECREF(__pyx_v_ii);
13942  __Pyx_XGIVEREF(__pyx_r);
13943  __Pyx_RefNannyFinishContext();
13944  return __pyx_r;
13945 }
13946 
13947 /* "WaveTools.pyx":616
13948  *
13949  * """
13950  * def __init__(self, # <<<<<<<<<<<<<<
13951  * M, #half bin of frequencies
13952  * Tp, # np array with
13953  */
13954 
13955 /* Python wrapper */
13956 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
13957 static char __pyx_doc_9WaveTools_16DirectionalWaves___init__[] = "DirectionalWaves.__init__(self, M, Tp, Hs, mwl, depth, waveDir0, g, N, bandFactor, spectName, spreadName, spectral_params=None, spread_params=None, phi=None, phiSymm=False)";
13958 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves___init__};
13959 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
13960  PyObject *__pyx_v_self = 0;
13961  PyObject *__pyx_v_M = 0;
13962  PyObject *__pyx_v_Tp = 0;
13963  PyObject *__pyx_v_Hs = 0;
13964  PyObject *__pyx_v_mwl = 0;
13965  PyObject *__pyx_v_depth = 0;
13966  PyObject *__pyx_v_waveDir0 = 0;
13967  PyObject *__pyx_v_g = 0;
13968  PyObject *__pyx_v_N = 0;
13969  PyObject *__pyx_v_bandFactor = 0;
13970  PyObject *__pyx_v_spectName = 0;
13971  PyObject *__pyx_v_spreadName = 0;
13972  PyObject *__pyx_v_spectral_params = 0;
13973  PyObject *__pyx_v_spread_params = 0;
13974  PyObject *__pyx_v_phi = 0;
13975  PyObject *__pyx_v_phiSymm = 0;
13976  int __pyx_lineno = 0;
13977  const char *__pyx_filename = NULL;
13978  int __pyx_clineno = 0;
13979  PyObject *__pyx_r = 0;
13980  __Pyx_RefNannyDeclarations
13981  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
13982  {
13983  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_M,&__pyx_n_s_Tp,&__pyx_n_s_Hs,&__pyx_n_s_mwl,&__pyx_n_s_depth,&__pyx_n_s_waveDir0,&__pyx_n_s_g,&__pyx_n_s_N,&__pyx_n_s_bandFactor,&__pyx_n_s_spectName,&__pyx_n_s_spreadName,&__pyx_n_s_spectral_params,&__pyx_n_s_spread_params,&__pyx_n_s_phi,&__pyx_n_s_phiSymm,0};
13984  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
13985 
13986  /* "WaveTools.pyx":628
13987  * spectName ,# random words will result in error and return the available spectra
13988  * spreadName ,# random words will result in error and return the available spectra
13989  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth} # <<<<<<<<<<<<<<
13990  * spread_params = None,
13991  * phi=None, # phi must be an (2*M+1)*N numpy array
13992  */
13993  values[12] = ((PyObject *)((PyObject *)Py_None));
13994 
13995  /* "WaveTools.pyx":629
13996  * spreadName ,# random words will result in error and return the available spectra
13997  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
13998  * spread_params = None, # <<<<<<<<<<<<<<
13999  * phi=None, # phi must be an (2*M+1)*N numpy array
14000  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14001  */
14002  values[13] = ((PyObject *)((PyObject *)Py_None));
14003 
14004  /* "WaveTools.pyx":630
14005  * spectral_params = None, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
14006  * spread_params = None,
14007  * phi=None, # phi must be an (2*M+1)*N numpy array # <<<<<<<<<<<<<<
14008  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14009  * ):
14010  */
14011  values[14] = ((PyObject *)((PyObject *)Py_None));
14012 
14013  /* "WaveTools.pyx":631
14014  * spread_params = None,
14015  * phi=None, # phi must be an (2*M+1)*N numpy array
14016  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2] # <<<<<<<<<<<<<<
14017  * ):
14018  * validSpread = [cos2s,mitsuyasu]
14019  */
14020  values[15] = ((PyObject *)((PyObject *)Py_False));
14021  if (unlikely(__pyx_kwds)) {
14022  Py_ssize_t kw_args;
14023  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
14024  switch (pos_args) {
14025  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
14026  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
14027  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
14028  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
14029  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
14030  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
14031  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
14032  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
14033  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
14034  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
14035  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
14036  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
14037  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
14038  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14039  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14040  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14041  case 0: break;
14042  default: goto __pyx_L5_argtuple_error;
14043  }
14044  kw_args = PyDict_Size(__pyx_kwds);
14045  switch (pos_args) {
14046  case 0:
14047  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
14048  else goto __pyx_L5_argtuple_error;
14049  case 1:
14050  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_M)) != 0)) kw_args--;
14051  else {
14052  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14053  }
14054  case 2:
14055  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Tp)) != 0)) kw_args--;
14056  else {
14057  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14058  }
14059  case 3:
14060  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_Hs)) != 0)) kw_args--;
14061  else {
14062  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14063  }
14064  case 4:
14065  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
14066  else {
14067  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14068  }
14069  case 5:
14070  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
14071  else {
14072  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14073  }
14074  case 6:
14075  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir0)) != 0)) kw_args--;
14076  else {
14077  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14078  }
14079  case 7:
14080  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
14081  else {
14082  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14083  }
14084  case 8:
14085  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
14086  else {
14087  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14088  }
14089  case 9:
14090  if (likely((values[9] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_bandFactor)) != 0)) kw_args--;
14091  else {
14092  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 9); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14093  }
14094  case 10:
14095  if (likely((values[10] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectName)) != 0)) kw_args--;
14096  else {
14097  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 10); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14098  }
14099  case 11:
14100  if (likely((values[11] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spreadName)) != 0)) kw_args--;
14101  else {
14102  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, 11); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14103  }
14104  case 12:
14105  if (kw_args > 0) {
14106  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spectral_params);
14107  if (value) { values[12] = value; kw_args--; }
14108  }
14109  case 13:
14110  if (kw_args > 0) {
14111  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_spread_params);
14112  if (value) { values[13] = value; kw_args--; }
14113  }
14114  case 14:
14115  if (kw_args > 0) {
14116  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phi);
14117  if (value) { values[14] = value; kw_args--; }
14118  }
14119  case 15:
14120  if (kw_args > 0) {
14121  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_phiSymm);
14122  if (value) { values[15] = value; kw_args--; }
14123  }
14124  }
14125  if (unlikely(kw_args > 0)) {
14126  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14127  }
14128  } else {
14129  switch (PyTuple_GET_SIZE(__pyx_args)) {
14130  case 16: values[15] = PyTuple_GET_ITEM(__pyx_args, 15);
14131  case 15: values[14] = PyTuple_GET_ITEM(__pyx_args, 14);
14132  case 14: values[13] = PyTuple_GET_ITEM(__pyx_args, 13);
14133  case 13: values[12] = PyTuple_GET_ITEM(__pyx_args, 12);
14134  case 12: values[11] = PyTuple_GET_ITEM(__pyx_args, 11);
14135  values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
14136  values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
14137  values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
14138  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
14139  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
14140  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
14141  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
14142  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
14143  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
14144  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
14145  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
14146  break;
14147  default: goto __pyx_L5_argtuple_error;
14148  }
14149  }
14150  __pyx_v_self = values[0];
14151  __pyx_v_M = values[1];
14152  __pyx_v_Tp = values[2];
14153  __pyx_v_Hs = values[3];
14154  __pyx_v_mwl = values[4];
14155  __pyx_v_depth = values[5];
14156  __pyx_v_waveDir0 = values[6];
14157  __pyx_v_g = values[7];
14158  __pyx_v_N = values[8];
14159  __pyx_v_bandFactor = values[9];
14160  __pyx_v_spectName = values[10];
14161  __pyx_v_spreadName = values[11];
14162  __pyx_v_spectral_params = values[12];
14163  __pyx_v_spread_params = values[13];
14164  __pyx_v_phi = values[14];
14165  __pyx_v_phiSymm = values[15];
14166  }
14167  goto __pyx_L4_argument_unpacking_done;
14168  __pyx_L5_argtuple_error:;
14169  __Pyx_RaiseArgtupleInvalid("__init__", 0, 12, 16, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
14170  __pyx_L3_error:;
14171  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
14172  __Pyx_RefNannyFinishContext();
14173  return NULL;
14174  __pyx_L4_argument_unpacking_done:;
14175  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves___init__(__pyx_self, __pyx_v_self, __pyx_v_M, __pyx_v_Tp, __pyx_v_Hs, __pyx_v_mwl, __pyx_v_depth, __pyx_v_waveDir0, __pyx_v_g, __pyx_v_N, __pyx_v_bandFactor, __pyx_v_spectName, __pyx_v_spreadName, __pyx_v_spectral_params, __pyx_v_spread_params, __pyx_v_phi, __pyx_v_phiSymm);
14176 
14177  /* "WaveTools.pyx":616
14178  *
14179  * """
14180  * def __init__(self, # <<<<<<<<<<<<<<
14181  * M, #half bin of frequencies
14182  * Tp, # np array with
14183  */
14184 
14185  /* function exit code */
14186  __Pyx_RefNannyFinishContext();
14187  return __pyx_r;
14188 }
14189 
14190 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_M, PyObject *__pyx_v_Tp, PyObject *__pyx_v_Hs, PyObject *__pyx_v_mwl, PyObject *__pyx_v_depth, PyObject *__pyx_v_waveDir0, PyObject *__pyx_v_g, PyObject *__pyx_v_N, PyObject *__pyx_v_bandFactor, PyObject *__pyx_v_spectName, PyObject *__pyx_v_spreadName, PyObject *__pyx_v_spectral_params, PyObject *__pyx_v_spread_params, PyObject *__pyx_v_phi, PyObject *__pyx_v_phiSymm) {
14191  PyObject *__pyx_v_validSpread = NULL;
14192  PyObject *__pyx_v_spread_fun = NULL;
14193  PyObject *__pyx_v_rotation3D = NULL;
14194  PyObject *__pyx_v_temp_array = NULL;
14195  PyObject *__pyx_v_directions = NULL;
14196  PyObject *__pyx_v_rr = NULL;
14197  PyObject *__pyx_v_theta = NULL;
14198  PyObject *__pyx_v_i = NULL;
14199  PyObject *__pyx_v_freq = NULL;
14200  PyObject *__pyx_v_ii = NULL;
14201  PyObject *__pyx_r = NULL;
14202  __Pyx_RefNannyDeclarations
14203  PyObject *__pyx_t_1 = NULL;
14204  PyObject *__pyx_t_2 = NULL;
14205  PyObject *__pyx_t_3 = NULL;
14206  Py_ssize_t __pyx_t_4;
14207  PyObject *__pyx_t_5 = NULL;
14208  PyObject *__pyx_t_6 = NULL;
14209  PyObject *__pyx_t_7 = NULL;
14210  PyObject *__pyx_t_8 = NULL;
14211  PyObject *(*__pyx_t_9)(PyObject *);
14212  Py_ssize_t __pyx_t_10;
14213  int __pyx_t_11;
14214  PyObject *__pyx_t_12 = NULL;
14215  PyObject *__pyx_t_13 = NULL;
14216  PyObject *__pyx_t_14 = NULL;
14217  PyObject *__pyx_t_15 = NULL;
14218  PyObject *__pyx_t_16 = NULL;
14219  int __pyx_lineno = 0;
14220  const char *__pyx_filename = NULL;
14221  int __pyx_clineno = 0;
14222  __Pyx_RefNannySetupContext("__init__", 0);
14223 
14224  /* "WaveTools.pyx":633
14225  * phiSymm = False # When true, phi[-pi/2,0] is symmetric to phi[0,pi/2]
14226  * ):
14227  * validSpread = [cos2s,mitsuyasu] # <<<<<<<<<<<<<<
14228  * spread_fun = loadExistingFunction(spreadName, validSpread)
14229  * self.M = M
14230  */
14231  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_cos2s); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14232  __Pyx_GOTREF(__pyx_t_1);
14233  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_mitsuyasu); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14234  __Pyx_GOTREF(__pyx_t_2);
14235  __pyx_t_3 = PyList_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14236  __Pyx_GOTREF(__pyx_t_3);
14237  __Pyx_GIVEREF(__pyx_t_1);
14238  PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
14239  __Pyx_GIVEREF(__pyx_t_2);
14240  PyList_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
14241  __pyx_t_1 = 0;
14242  __pyx_t_2 = 0;
14243  __pyx_v_validSpread = ((PyObject*)__pyx_t_3);
14244  __pyx_t_3 = 0;
14245 
14246  /* "WaveTools.pyx":634
14247  * ):
14248  * validSpread = [cos2s,mitsuyasu]
14249  * spread_fun = loadExistingFunction(spreadName, validSpread) # <<<<<<<<<<<<<<
14250  * self.M = M
14251  * self.Mtot = 2*M+1
14252  */
14253  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14254  __Pyx_GOTREF(__pyx_t_2);
14255  __pyx_t_1 = NULL;
14256  __pyx_t_4 = 0;
14257  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
14258  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
14259  if (likely(__pyx_t_1)) {
14260  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
14261  __Pyx_INCREF(__pyx_t_1);
14262  __Pyx_INCREF(function);
14263  __Pyx_DECREF_SET(__pyx_t_2, function);
14264  __pyx_t_4 = 1;
14265  }
14266  }
14267  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14268  __Pyx_GOTREF(__pyx_t_5);
14269  if (__pyx_t_1) {
14270  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
14271  }
14272  __Pyx_INCREF(__pyx_v_spreadName);
14273  __Pyx_GIVEREF(__pyx_v_spreadName);
14274  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_v_spreadName);
14275  __Pyx_INCREF(__pyx_v_validSpread);
14276  __Pyx_GIVEREF(__pyx_v_validSpread);
14277  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_validSpread);
14278  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 634; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14279  __Pyx_GOTREF(__pyx_t_3);
14280  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14281  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14282  __pyx_v_spread_fun = __pyx_t_3;
14283  __pyx_t_3 = 0;
14284 
14285  /* "WaveTools.pyx":635
14286  * validSpread = [cos2s,mitsuyasu]
14287  * spread_fun = loadExistingFunction(spreadName, validSpread)
14288  * self.M = M # <<<<<<<<<<<<<<
14289  * self.Mtot = 2*M+1
14290  * self.waveDir0 = setDirVector(waveDir0)
14291  */
14292  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_M, __pyx_v_M) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 635; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14293 
14294  /* "WaveTools.pyx":636
14295  * spread_fun = loadExistingFunction(spreadName, validSpread)
14296  * self.M = M
14297  * self.Mtot = 2*M+1 # <<<<<<<<<<<<<<
14298  * self.waveDir0 = setDirVector(waveDir0)
14299  * self.vDir = setVertDir(g)
14300  */
14301  __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14302  __Pyx_GOTREF(__pyx_t_3);
14303  __pyx_t_2 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14304  __Pyx_GOTREF(__pyx_t_2);
14305  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14306  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Mtot, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14307  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14308 
14309  /* "WaveTools.pyx":637
14310  * self.M = M
14311  * self.Mtot = 2*M+1
14312  * self.waveDir0 = setDirVector(waveDir0) # <<<<<<<<<<<<<<
14313  * self.vDir = setVertDir(g)
14314  *
14315  */
14316  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14317  __Pyx_GOTREF(__pyx_t_3);
14318  __pyx_t_5 = NULL;
14319  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
14320  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
14321  if (likely(__pyx_t_5)) {
14322  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14323  __Pyx_INCREF(__pyx_t_5);
14324  __Pyx_INCREF(function);
14325  __Pyx_DECREF_SET(__pyx_t_3, function);
14326  }
14327  }
14328  if (!__pyx_t_5) {
14329  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_waveDir0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14330  __Pyx_GOTREF(__pyx_t_2);
14331  } else {
14332  __pyx_t_1 = PyTuple_New(1+1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14333  __Pyx_GOTREF(__pyx_t_1);
14334  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
14335  __Pyx_INCREF(__pyx_v_waveDir0);
14336  __Pyx_GIVEREF(__pyx_v_waveDir0);
14337  PyTuple_SET_ITEM(__pyx_t_1, 0+1, __pyx_v_waveDir0);
14338  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14339  __Pyx_GOTREF(__pyx_t_2);
14340  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14341  }
14342  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14343  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir0, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 637; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14344  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14345 
14346  /* "WaveTools.pyx":638
14347  * self.Mtot = 2*M+1
14348  * self.waveDir0 = setDirVector(waveDir0)
14349  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
14350  *
14351  *
14352  */
14353  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14354  __Pyx_GOTREF(__pyx_t_3);
14355  __pyx_t_1 = NULL;
14356  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
14357  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
14358  if (likely(__pyx_t_1)) {
14359  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
14360  __Pyx_INCREF(__pyx_t_1);
14361  __Pyx_INCREF(function);
14362  __Pyx_DECREF_SET(__pyx_t_3, function);
14363  }
14364  }
14365  if (!__pyx_t_1) {
14366  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_g); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14367  __Pyx_GOTREF(__pyx_t_2);
14368  } else {
14369  __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14370  __Pyx_GOTREF(__pyx_t_5);
14371  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1); __pyx_t_1 = NULL;
14372  __Pyx_INCREF(__pyx_v_g);
14373  __Pyx_GIVEREF(__pyx_v_g);
14374  PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_v_g);
14375  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14376  __Pyx_GOTREF(__pyx_t_2);
14377  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14378  }
14379  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14380  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14381  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14382 
14383  /* "WaveTools.pyx":642
14384  *
14385  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14386  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14387  * Tp, # np array with
14388  * Hs,
14389  */
14390  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14391  __Pyx_GOTREF(__pyx_t_2);
14392  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_init); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14393  __Pyx_GOTREF(__pyx_t_3);
14394  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14395 
14396  /* "WaveTools.pyx":647
14397  * mwl,#m significant wave height
14398  * depth, #m depth
14399  * self.waveDir0, # <<<<<<<<<<<<<<
14400  * g, #peak frequency
14401  * N,
14402  */
14403  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14404  __Pyx_GOTREF(__pyx_t_2);
14405 
14406  /* "WaveTools.pyx":642
14407  *
14408  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14409  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14410  * Tp, # np array with
14411  * Hs,
14412  */
14413  __pyx_t_5 = PyTuple_New(11); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14414  __Pyx_GOTREF(__pyx_t_5);
14415  __Pyx_INCREF(__pyx_v_self);
14416  __Pyx_GIVEREF(__pyx_v_self);
14417  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_self);
14418  __Pyx_INCREF(__pyx_v_Tp);
14419  __Pyx_GIVEREF(__pyx_v_Tp);
14420  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_Tp);
14421  __Pyx_INCREF(__pyx_v_Hs);
14422  __Pyx_GIVEREF(__pyx_v_Hs);
14423  PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_v_Hs);
14424  __Pyx_INCREF(__pyx_v_mwl);
14425  __Pyx_GIVEREF(__pyx_v_mwl);
14426  PyTuple_SET_ITEM(__pyx_t_5, 3, __pyx_v_mwl);
14427  __Pyx_INCREF(__pyx_v_depth);
14428  __Pyx_GIVEREF(__pyx_v_depth);
14429  PyTuple_SET_ITEM(__pyx_t_5, 4, __pyx_v_depth);
14430  __Pyx_GIVEREF(__pyx_t_2);
14431  PyTuple_SET_ITEM(__pyx_t_5, 5, __pyx_t_2);
14432  __Pyx_INCREF(__pyx_v_g);
14433  __Pyx_GIVEREF(__pyx_v_g);
14434  PyTuple_SET_ITEM(__pyx_t_5, 6, __pyx_v_g);
14435  __Pyx_INCREF(__pyx_v_N);
14436  __Pyx_GIVEREF(__pyx_v_N);
14437  PyTuple_SET_ITEM(__pyx_t_5, 7, __pyx_v_N);
14438  __Pyx_INCREF(__pyx_v_bandFactor);
14439  __Pyx_GIVEREF(__pyx_v_bandFactor);
14440  PyTuple_SET_ITEM(__pyx_t_5, 8, __pyx_v_bandFactor);
14441  __Pyx_INCREF(__pyx_v_spectName);
14442  __Pyx_GIVEREF(__pyx_v_spectName);
14443  PyTuple_SET_ITEM(__pyx_t_5, 9, __pyx_v_spectName);
14444  __Pyx_INCREF(__pyx_v_spectral_params);
14445  __Pyx_GIVEREF(__pyx_v_spectral_params);
14446  PyTuple_SET_ITEM(__pyx_t_5, 10, __pyx_v_spectral_params);
14447  __pyx_t_2 = 0;
14448 
14449  /* "WaveTools.pyx":653
14450  * spectName,# random words will result in error and return the available spectra
14451  * spectral_params, #JONPARAMS = {"gamma": 3.3, "TMA":True,"depth": depth}
14452  * phi = None # <<<<<<<<<<<<<<
14453  * )
14454  *
14455  */
14456  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14457  __Pyx_GOTREF(__pyx_t_2);
14458  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_phi, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 653; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14459 
14460  /* "WaveTools.pyx":642
14461  *
14462  * # Loading Random waves to get the frequency array the wavelegnths and the frequency spectrum
14463  * RandomWaves.__init__(self, # <<<<<<<<<<<<<<
14464  * Tp, # np array with
14465  * Hs,
14466  */
14467  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 642; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14468  __Pyx_GOTREF(__pyx_t_1);
14469  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14470  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14471  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14472  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14473 
14474  /* "WaveTools.pyx":659
14475  *
14476  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
14477  * from SpatialTools import rotation3D # <<<<<<<<<<<<<<
14478  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14479  * self.dth = (self.thetas[1] - self.thetas[0])
14480  */
14481  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14482  __Pyx_GOTREF(__pyx_t_1);
14483  __Pyx_INCREF(__pyx_n_s_rotation3D);
14484  __Pyx_GIVEREF(__pyx_n_s_rotation3D);
14485  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_rotation3D);
14486  __pyx_t_2 = __Pyx_Import(__pyx_n_s_SpatialTools, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14487  __Pyx_GOTREF(__pyx_t_2);
14488  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14489  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_rotation3D); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14490  __Pyx_GOTREF(__pyx_t_1);
14491  __Pyx_INCREF(__pyx_t_1);
14492  __pyx_v_rotation3D = __pyx_t_1;
14493  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14494  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14495 
14496  /* "WaveTools.pyx":660
14497  * # Directional waves propagate usually in a plane -90 to 90 deg with respect to the direction vector, normal to the gavity direction. Rotating the waveDir0 vector around the g vector to produce the directional space
14498  * from SpatialTools import rotation3D
14499  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1) # <<<<<<<<<<<<<<
14500  * self.dth = (self.thetas[1] - self.thetas[0])
14501  * self.waveDirs = np.zeros((2*M+1,3),)
14502  */
14503  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14504  __Pyx_GOTREF(__pyx_t_1);
14505  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14506  __Pyx_GOTREF(__pyx_t_5);
14507  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14508  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14509  __Pyx_GOTREF(__pyx_t_1);
14510  __pyx_t_3 = PyNumber_Negative(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14511  __Pyx_GOTREF(__pyx_t_3);
14512  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14513  __pyx_t_1 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14514  __Pyx_GOTREF(__pyx_t_1);
14515  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14516  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14517  __Pyx_GOTREF(__pyx_t_3);
14518  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_int_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14519  __Pyx_GOTREF(__pyx_t_6);
14520  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14521  __pyx_t_3 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14522  __Pyx_GOTREF(__pyx_t_3);
14523  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14524  __Pyx_GOTREF(__pyx_t_7);
14525  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
14526  __pyx_t_3 = NULL;
14527  __pyx_t_4 = 0;
14528  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
14529  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
14530  if (likely(__pyx_t_3)) {
14531  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14532  __Pyx_INCREF(__pyx_t_3);
14533  __Pyx_INCREF(function);
14534  __Pyx_DECREF_SET(__pyx_t_5, function);
14535  __pyx_t_4 = 1;
14536  }
14537  }
14538  __pyx_t_8 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14539  __Pyx_GOTREF(__pyx_t_8);
14540  if (__pyx_t_3) {
14541  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_3); __pyx_t_3 = NULL;
14542  }
14543  __Pyx_GIVEREF(__pyx_t_1);
14544  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_4, __pyx_t_1);
14545  __Pyx_GIVEREF(__pyx_t_6);
14546  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_4, __pyx_t_6);
14547  __Pyx_GIVEREF(__pyx_t_7);
14548  PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_4, __pyx_t_7);
14549  __pyx_t_1 = 0;
14550  __pyx_t_6 = 0;
14551  __pyx_t_7 = 0;
14552  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14553  __Pyx_GOTREF(__pyx_t_2);
14554  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14555  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14556  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_thetas, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14557  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14558 
14559  /* "WaveTools.pyx":661
14560  * from SpatialTools import rotation3D
14561  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14562  * self.dth = (self.thetas[1] - self.thetas[0]) # <<<<<<<<<<<<<<
14563  * self.waveDirs = np.zeros((2*M+1,3),)
14564  * self.phiDirs = np.zeros((2*M+1,N),)
14565  */
14566  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14567  __Pyx_GOTREF(__pyx_t_2);
14568  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14569  __Pyx_GOTREF(__pyx_t_5);
14570  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14571  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14572  __Pyx_GOTREF(__pyx_t_2);
14573  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14574  __Pyx_GOTREF(__pyx_t_8);
14575  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14576  __pyx_t_2 = PyNumber_Subtract(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14577  __Pyx_GOTREF(__pyx_t_2);
14578  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14579  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14580  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dth, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14581  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14582 
14583  /* "WaveTools.pyx":662
14584  * self.thetas = np.linspace(-pi/2,pi/2,2*M+1)
14585  * self.dth = (self.thetas[1] - self.thetas[0])
14586  * self.waveDirs = np.zeros((2*M+1,3),) # <<<<<<<<<<<<<<
14587  * self.phiDirs = np.zeros((2*M+1,N),)
14588  * self.aiDirs = np.zeros((2*M+1,N),)
14589  */
14590  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14591  __Pyx_GOTREF(__pyx_t_8);
14592  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_zeros); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14593  __Pyx_GOTREF(__pyx_t_5);
14594  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14595  __pyx_t_8 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14596  __Pyx_GOTREF(__pyx_t_8);
14597  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_8, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14598  __Pyx_GOTREF(__pyx_t_7);
14599  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14600  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14601  __Pyx_GOTREF(__pyx_t_8);
14602  __Pyx_GIVEREF(__pyx_t_7);
14603  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7);
14604  __Pyx_INCREF(__pyx_int_3);
14605  __Pyx_GIVEREF(__pyx_int_3);
14606  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
14607  __pyx_t_7 = 0;
14608  __pyx_t_7 = NULL;
14609  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
14610  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
14611  if (likely(__pyx_t_7)) {
14612  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
14613  __Pyx_INCREF(__pyx_t_7);
14614  __Pyx_INCREF(function);
14615  __Pyx_DECREF_SET(__pyx_t_5, function);
14616  }
14617  }
14618  if (!__pyx_t_7) {
14619  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14620  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14621  __Pyx_GOTREF(__pyx_t_2);
14622  } else {
14623  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14624  __Pyx_GOTREF(__pyx_t_6);
14625  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7); __pyx_t_7 = NULL;
14626  __Pyx_GIVEREF(__pyx_t_8);
14627  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8);
14628  __pyx_t_8 = 0;
14629  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14630  __Pyx_GOTREF(__pyx_t_2);
14631  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14632  }
14633  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14634  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14635  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14636 
14637  /* "WaveTools.pyx":663
14638  * self.dth = (self.thetas[1] - self.thetas[0])
14639  * self.waveDirs = np.zeros((2*M+1,3),)
14640  * self.phiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
14641  * self.aiDirs = np.zeros((2*M+1,N),)
14642  *
14643  */
14644  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14645  __Pyx_GOTREF(__pyx_t_5);
14646  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14647  __Pyx_GOTREF(__pyx_t_6);
14648  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14649  __pyx_t_5 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14650  __Pyx_GOTREF(__pyx_t_5);
14651  __pyx_t_8 = __Pyx_PyInt_AddObjC(__pyx_t_5, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14652  __Pyx_GOTREF(__pyx_t_8);
14653  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14654  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14655  __Pyx_GOTREF(__pyx_t_5);
14656  __Pyx_GIVEREF(__pyx_t_8);
14657  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
14658  __Pyx_INCREF(__pyx_v_N);
14659  __Pyx_GIVEREF(__pyx_v_N);
14660  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_N);
14661  __pyx_t_8 = 0;
14662  __pyx_t_8 = NULL;
14663  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
14664  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
14665  if (likely(__pyx_t_8)) {
14666  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
14667  __Pyx_INCREF(__pyx_t_8);
14668  __Pyx_INCREF(function);
14669  __Pyx_DECREF_SET(__pyx_t_6, function);
14670  }
14671  }
14672  if (!__pyx_t_8) {
14673  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14674  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14675  __Pyx_GOTREF(__pyx_t_2);
14676  } else {
14677  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14678  __Pyx_GOTREF(__pyx_t_7);
14679  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL;
14680  __Pyx_GIVEREF(__pyx_t_5);
14681  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_5);
14682  __pyx_t_5 = 0;
14683  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14684  __Pyx_GOTREF(__pyx_t_2);
14685  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14686  }
14687  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14688  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 663; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14689  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14690 
14691  /* "WaveTools.pyx":664
14692  * self.waveDirs = np.zeros((2*M+1,3),)
14693  * self.phiDirs = np.zeros((2*M+1,N),)
14694  * self.aiDirs = np.zeros((2*M+1,N),) # <<<<<<<<<<<<<<
14695  *
14696  *
14697  */
14698  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14699  __Pyx_GOTREF(__pyx_t_6);
14700  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14701  __Pyx_GOTREF(__pyx_t_7);
14702  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14703  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14704  __Pyx_GOTREF(__pyx_t_6);
14705  __pyx_t_5 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14706  __Pyx_GOTREF(__pyx_t_5);
14707  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14708  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14709  __Pyx_GOTREF(__pyx_t_6);
14710  __Pyx_GIVEREF(__pyx_t_5);
14711  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
14712  __Pyx_INCREF(__pyx_v_N);
14713  __Pyx_GIVEREF(__pyx_v_N);
14714  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_N);
14715  __pyx_t_5 = 0;
14716  __pyx_t_5 = NULL;
14717  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
14718  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_7);
14719  if (likely(__pyx_t_5)) {
14720  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
14721  __Pyx_INCREF(__pyx_t_5);
14722  __Pyx_INCREF(function);
14723  __Pyx_DECREF_SET(__pyx_t_7, function);
14724  }
14725  }
14726  if (!__pyx_t_5) {
14727  __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14728  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14729  __Pyx_GOTREF(__pyx_t_2);
14730  } else {
14731  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14732  __Pyx_GOTREF(__pyx_t_8);
14733  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5); __pyx_t_5 = NULL;
14734  __Pyx_GIVEREF(__pyx_t_6);
14735  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_6);
14736  __pyx_t_6 = 0;
14737  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14738  __Pyx_GOTREF(__pyx_t_2);
14739  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14740  }
14741  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14742  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14743  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14744 
14745  /* "WaveTools.pyx":667
14746  *
14747  *
14748  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
14749  * temp_array[0,:] = waveDir0
14750  * directions = range(0,self.Mtot)
14751  */
14752  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14753  __Pyx_GOTREF(__pyx_t_2);
14754  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_zeros); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14755  __Pyx_GOTREF(__pyx_t_7);
14756  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14757  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14758  __Pyx_GOTREF(__pyx_t_2);
14759  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14760  __pyx_v_temp_array = __pyx_t_2;
14761  __pyx_t_2 = 0;
14762 
14763  /* "WaveTools.pyx":668
14764  *
14765  * temp_array = np.zeros((1,3),)
14766  * temp_array[0,:] = waveDir0 # <<<<<<<<<<<<<<
14767  * directions = range(0,self.Mtot)
14768  *
14769  */
14770  if (unlikely(PyObject_SetItem(__pyx_v_temp_array, __pyx_tuple__63, __pyx_v_waveDir0) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14771 
14772  /* "WaveTools.pyx":669
14773  * temp_array = np.zeros((1,3),)
14774  * temp_array[0,:] = waveDir0
14775  * directions = range(0,self.Mtot) # <<<<<<<<<<<<<<
14776  *
14777  * # initialising wave directions
14778  */
14779  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14780  __Pyx_GOTREF(__pyx_t_2);
14781  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14782  __Pyx_GOTREF(__pyx_t_7);
14783  __Pyx_INCREF(__pyx_int_0);
14784  __Pyx_GIVEREF(__pyx_int_0);
14785  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_int_0);
14786  __Pyx_GIVEREF(__pyx_t_2);
14787  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
14788  __pyx_t_2 = 0;
14789  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14790  __Pyx_GOTREF(__pyx_t_2);
14791  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14792  __pyx_v_directions = __pyx_t_2;
14793  __pyx_t_2 = 0;
14794 
14795  /* "WaveTools.pyx":672
14796  *
14797  * # initialising wave directions
14798  * for rr in directions: # <<<<<<<<<<<<<<
14799  * theta = self.thetas[rr]
14800  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14801  */
14802  if (likely(PyList_CheckExact(__pyx_v_directions)) || PyTuple_CheckExact(__pyx_v_directions)) {
14803  __pyx_t_2 = __pyx_v_directions; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
14804  __pyx_t_9 = NULL;
14805  } else {
14806  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_directions); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14807  __Pyx_GOTREF(__pyx_t_2);
14808  __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14809  }
14810  for (;;) {
14811  if (likely(!__pyx_t_9)) {
14812  if (likely(PyList_CheckExact(__pyx_t_2))) {
14813  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
14814  #if CYTHON_COMPILING_IN_CPYTHON
14815  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14816  #else
14817  __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14818  __Pyx_GOTREF(__pyx_t_7);
14819  #endif
14820  } else {
14821  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
14822  #if CYTHON_COMPILING_IN_CPYTHON
14823  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_7); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14824  #else
14825  __pyx_t_7 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14826  __Pyx_GOTREF(__pyx_t_7);
14827  #endif
14828  }
14829  } else {
14830  __pyx_t_7 = __pyx_t_9(__pyx_t_2);
14831  if (unlikely(!__pyx_t_7)) {
14832  PyObject* exc_type = PyErr_Occurred();
14833  if (exc_type) {
14834  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
14835  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14836  }
14837  break;
14838  }
14839  __Pyx_GOTREF(__pyx_t_7);
14840  }
14841  __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_7);
14842  __pyx_t_7 = 0;
14843 
14844  /* "WaveTools.pyx":673
14845  * # initialising wave directions
14846  * for rr in directions:
14847  * theta = self.thetas[rr] # <<<<<<<<<<<<<<
14848  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14849  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
14850  */
14851  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14852  __Pyx_GOTREF(__pyx_t_7);
14853  __pyx_t_8 = PyObject_GetItem(__pyx_t_7, __pyx_v_rr); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 673; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14854  __Pyx_GOTREF(__pyx_t_8);
14855  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14856  __Pyx_XDECREF_SET(__pyx_v_theta, __pyx_t_8);
14857  __pyx_t_8 = 0;
14858 
14859  /* "WaveTools.pyx":674
14860  * for rr in directions:
14861  * theta = self.thetas[rr]
14862  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:] # <<<<<<<<<<<<<<
14863  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
14864  *
14865  */
14866  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14867  __Pyx_GOTREF(__pyx_t_7);
14868  __Pyx_INCREF(__pyx_v_rotation3D);
14869  __pyx_t_6 = __pyx_v_rotation3D; __pyx_t_5 = NULL;
14870  __pyx_t_10 = 0;
14871  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
14872  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
14873  if (likely(__pyx_t_5)) {
14874  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
14875  __Pyx_INCREF(__pyx_t_5);
14876  __Pyx_INCREF(function);
14877  __Pyx_DECREF_SET(__pyx_t_6, function);
14878  __pyx_t_10 = 1;
14879  }
14880  }
14881  __pyx_t_1 = PyTuple_New(3+__pyx_t_10); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14882  __Pyx_GOTREF(__pyx_t_1);
14883  if (__pyx_t_5) {
14884  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
14885  }
14886  __Pyx_INCREF(__pyx_v_temp_array);
14887  __Pyx_GIVEREF(__pyx_v_temp_array);
14888  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_10, __pyx_v_temp_array);
14889  __Pyx_INCREF(__pyx_v_theta);
14890  __Pyx_GIVEREF(__pyx_v_theta);
14891  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_10, __pyx_v_theta);
14892  __Pyx_GIVEREF(__pyx_t_7);
14893  PyTuple_SET_ITEM(__pyx_t_1, 2+__pyx_t_10, __pyx_t_7);
14894  __pyx_t_7 = 0;
14895  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_1, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14896  __Pyx_GOTREF(__pyx_t_8);
14897  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14898  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14899  __pyx_t_6 = PyObject_GetItem(__pyx_t_8, __pyx_tuple__65); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14900  __Pyx_GOTREF(__pyx_t_6);
14901  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14902  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14903  __Pyx_GOTREF(__pyx_t_8);
14904  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14905  __Pyx_GOTREF(__pyx_t_1);
14906  __Pyx_INCREF(__pyx_v_rr);
14907  __Pyx_GIVEREF(__pyx_v_rr);
14908  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_rr);
14909  __Pyx_INCREF(__pyx_slice__66);
14910  __Pyx_GIVEREF(__pyx_slice__66);
14911  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_slice__66);
14912  if (unlikely(PyObject_SetItem(__pyx_t_8, __pyx_t_1, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14913  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14914  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14915  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14916 
14917  /* "WaveTools.pyx":675
14918  * theta = self.thetas[rr]
14919  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14920  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:]) # <<<<<<<<<<<<<<
14921  *
14922  *
14923  */
14924  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14925  __Pyx_GOTREF(__pyx_t_1);
14926  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14927  __Pyx_GOTREF(__pyx_t_8);
14928  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14929  __Pyx_GOTREF(__pyx_t_7);
14930  __Pyx_INCREF(__pyx_v_rr);
14931  __Pyx_GIVEREF(__pyx_v_rr);
14932  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_rr);
14933  __Pyx_INCREF(__pyx_slice__67);
14934  __Pyx_GIVEREF(__pyx_slice__67);
14935  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_slice__67);
14936  __pyx_t_5 = PyObject_GetItem(__pyx_t_8, __pyx_t_7); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
14937  __Pyx_GOTREF(__pyx_t_5);
14938  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14939  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
14940  __pyx_t_7 = NULL;
14941  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_1))) {
14942  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
14943  if (likely(__pyx_t_7)) {
14944  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
14945  __Pyx_INCREF(__pyx_t_7);
14946  __Pyx_INCREF(function);
14947  __Pyx_DECREF_SET(__pyx_t_1, function);
14948  }
14949  }
14950  if (!__pyx_t_7) {
14951  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14952  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
14953  __Pyx_GOTREF(__pyx_t_6);
14954  } else {
14955  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14956  __Pyx_GOTREF(__pyx_t_8);
14957  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
14958  __Pyx_GIVEREF(__pyx_t_5);
14959  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_5);
14960  __pyx_t_5 = 0;
14961  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14962  __Pyx_GOTREF(__pyx_t_6);
14963  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14964  }
14965  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14966  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14967  __Pyx_GOTREF(__pyx_t_1);
14968  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14969  __Pyx_GOTREF(__pyx_t_8);
14970  __Pyx_INCREF(__pyx_v_rr);
14971  __Pyx_GIVEREF(__pyx_v_rr);
14972  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_rr);
14973  __Pyx_INCREF(__pyx_slice__68);
14974  __Pyx_GIVEREF(__pyx_slice__68);
14975  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_slice__68);
14976  if (unlikely(PyObject_SetItem(__pyx_t_1, __pyx_t_8, __pyx_t_6) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14977  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
14978  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
14979  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
14980 
14981  /* "WaveTools.pyx":672
14982  *
14983  * # initialising wave directions
14984  * for rr in directions: # <<<<<<<<<<<<<<
14985  * theta = self.thetas[rr]
14986  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
14987  */
14988  }
14989  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
14990 
14991  /* "WaveTools.pyx":679
14992  *
14993  * # Initialising phasing
14994  * if phi == None: # <<<<<<<<<<<<<<
14995  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
14996  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
14997  */
14998  __pyx_t_2 = PyObject_RichCompare(__pyx_v_phi, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
14999  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15000  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15001  if (__pyx_t_11) {
15002 
15003  /* "WaveTools.pyx":680
15004  * # Initialising phasing
15005  * if phi == None:
15006  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0]) # <<<<<<<<<<<<<<
15007  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15008  * self.phiDirs = phi
15009  */
15010  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_pi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15011  __Pyx_GOTREF(__pyx_t_2);
15012  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_0, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15013  __Pyx_GOTREF(__pyx_t_6);
15014  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15015  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15016  __Pyx_GOTREF(__pyx_t_8);
15017  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_random); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15018  __Pyx_GOTREF(__pyx_t_1);
15019  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15020  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_rand); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15021  __Pyx_GOTREF(__pyx_t_8);
15022  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15023  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15024  __Pyx_GOTREF(__pyx_t_1);
15025  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15026  __Pyx_GOTREF(__pyx_t_5);
15027  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_shape); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15028  __Pyx_GOTREF(__pyx_t_7);
15029  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15030  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15031  __Pyx_GOTREF(__pyx_t_5);
15032  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
15033  __pyx_t_7 = NULL;
15034  __pyx_t_4 = 0;
15035  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_8))) {
15036  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15037  if (likely(__pyx_t_7)) {
15038  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15039  __Pyx_INCREF(__pyx_t_7);
15040  __Pyx_INCREF(function);
15041  __Pyx_DECREF_SET(__pyx_t_8, function);
15042  __pyx_t_4 = 1;
15043  }
15044  }
15045  __pyx_t_3 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15046  __Pyx_GOTREF(__pyx_t_3);
15047  if (__pyx_t_7) {
15048  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
15049  }
15050  __Pyx_GIVEREF(__pyx_t_1);
15051  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_4, __pyx_t_1);
15052  __Pyx_GIVEREF(__pyx_t_5);
15053  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_4, __pyx_t_5);
15054  __pyx_t_1 = 0;
15055  __pyx_t_5 = 0;
15056  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15057  __Pyx_GOTREF(__pyx_t_2);
15058  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15059  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15060  __pyx_t_8 = PyNumber_Multiply(__pyx_t_6, __pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15061  __Pyx_GOTREF(__pyx_t_8);
15062  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15063  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15064  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15065  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15066 
15067  /* "WaveTools.pyx":679
15068  *
15069  * # Initialising phasing
15070  * if phi == None: # <<<<<<<<<<<<<<
15071  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15072  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15073  */
15074  goto __pyx_L5;
15075  }
15076 
15077  /* "WaveTools.pyx":681
15078  * if phi == None:
15079  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15080  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]): # <<<<<<<<<<<<<<
15081  * self.phiDirs = phi
15082  * else:
15083  */
15084  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15085  __Pyx_GOTREF(__pyx_t_2);
15086  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_shape); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15087  __Pyx_GOTREF(__pyx_t_6);
15088  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15089  __pyx_t_2 = NULL;
15090  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
15091  __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
15092  if (likely(__pyx_t_2)) {
15093  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
15094  __Pyx_INCREF(__pyx_t_2);
15095  __Pyx_INCREF(function);
15096  __Pyx_DECREF_SET(__pyx_t_6, function);
15097  }
15098  }
15099  if (!__pyx_t_2) {
15100  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_phi); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15101  __Pyx_GOTREF(__pyx_t_8);
15102  } else {
15103  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15104  __Pyx_GOTREF(__pyx_t_3);
15105  __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2); __pyx_t_2 = NULL;
15106  __Pyx_INCREF(__pyx_v_phi);
15107  __Pyx_GIVEREF(__pyx_v_phi);
15108  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_phi);
15109  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15110  __Pyx_GOTREF(__pyx_t_8);
15111  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15112  }
15113  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15114  __pyx_t_6 = PyNumber_Multiply(__pyx_int_2, __pyx_v_M); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15115  __Pyx_GOTREF(__pyx_t_6);
15116  __pyx_t_3 = __Pyx_PyInt_AddObjC(__pyx_t_6, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15117  __Pyx_GOTREF(__pyx_t_3);
15118  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15119  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fi); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15120  __Pyx_GOTREF(__pyx_t_6);
15121  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_shape); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15122  __Pyx_GOTREF(__pyx_t_2);
15123  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15124  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15125  __Pyx_GOTREF(__pyx_t_6);
15126  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15127  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15128  __Pyx_GOTREF(__pyx_t_2);
15129  __Pyx_GIVEREF(__pyx_t_3);
15130  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
15131  __Pyx_GIVEREF(__pyx_t_6);
15132  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_6);
15133  __pyx_t_3 = 0;
15134  __pyx_t_6 = 0;
15135  __pyx_t_6 = PyObject_RichCompare(__pyx_t_8, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15136  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15137  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15138  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 681; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15139  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15140  if (__pyx_t_11) {
15141 
15142  /* "WaveTools.pyx":682
15143  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15144  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]):
15145  * self.phiDirs = phi # <<<<<<<<<<<<<<
15146  * else:
15147  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
15148  */
15149  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs, __pyx_v_phi) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 682; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15150 
15151  /* "WaveTools.pyx":681
15152  * if phi == None:
15153  * self.phiDirs = 2.0*pi*np.random.rand(self.Mtot,self.fi.shape[0])
15154  * elif np.shape(phi) == (2*M+1,self.fi.shape[0]): # <<<<<<<<<<<<<<
15155  * self.phiDirs = phi
15156  * else:
15157  */
15158  goto __pyx_L5;
15159  }
15160 
15161  /* "WaveTools.pyx":684
15162  * self.phiDirs = phi
15163  * else:
15164  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N") # <<<<<<<<<<<<<<
15165  * sys.exit(1)
15166  *
15167  */
15168  /*else*/ {
15169  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15170  __Pyx_GOTREF(__pyx_t_6);
15171  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15172  __Pyx_GOTREF(__pyx_t_2);
15173  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15174  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15175 
15176  /* "WaveTools.pyx":685
15177  * else:
15178  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
15179  * sys.exit(1) # <<<<<<<<<<<<<<
15180  *
15181  * if (phiSymm):
15182  */
15183  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15184  __Pyx_GOTREF(__pyx_t_2);
15185  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15186  __Pyx_GOTREF(__pyx_t_6);
15187  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15188  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15189  __Pyx_GOTREF(__pyx_t_2);
15190  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15191  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15192  }
15193  __pyx_L5:;
15194 
15195  /* "WaveTools.pyx":687
15196  * sys.exit(1)
15197  *
15198  * if (phiSymm): # <<<<<<<<<<<<<<
15199  * for i in range(0,M):
15200  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15201  */
15202  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_v_phiSymm); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15203  if (__pyx_t_11) {
15204 
15205  /* "WaveTools.pyx":688
15206  *
15207  * if (phiSymm):
15208  * for i in range(0,M): # <<<<<<<<<<<<<<
15209  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15210  *
15211  */
15212  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15213  __Pyx_GOTREF(__pyx_t_2);
15214  __Pyx_INCREF(__pyx_int_0);
15215  __Pyx_GIVEREF(__pyx_int_0);
15216  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
15217  __Pyx_INCREF(__pyx_v_M);
15218  __Pyx_GIVEREF(__pyx_v_M);
15219  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_M);
15220  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15221  __Pyx_GOTREF(__pyx_t_6);
15222  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15223  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
15224  __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
15225  __pyx_t_9 = NULL;
15226  } else {
15227  __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15228  __Pyx_GOTREF(__pyx_t_2);
15229  __pyx_t_9 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15230  }
15231  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15232  for (;;) {
15233  if (likely(!__pyx_t_9)) {
15234  if (likely(PyList_CheckExact(__pyx_t_2))) {
15235  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
15236  #if CYTHON_COMPILING_IN_CPYTHON
15237  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15238  #else
15239  __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15240  __Pyx_GOTREF(__pyx_t_6);
15241  #endif
15242  } else {
15243  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
15244  #if CYTHON_COMPILING_IN_CPYTHON
15245  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15246  #else
15247  __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15248  __Pyx_GOTREF(__pyx_t_6);
15249  #endif
15250  }
15251  } else {
15252  __pyx_t_6 = __pyx_t_9(__pyx_t_2);
15253  if (unlikely(!__pyx_t_6)) {
15254  PyObject* exc_type = PyErr_Occurred();
15255  if (exc_type) {
15256  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
15257  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 688; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15258  }
15259  break;
15260  }
15261  __Pyx_GOTREF(__pyx_t_6);
15262  }
15263  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
15264  __pyx_t_6 = 0;
15265 
15266  /* "WaveTools.pyx":689
15267  * if (phiSymm):
15268  * for i in range(0,M):
15269  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:] # <<<<<<<<<<<<<<
15270  *
15271  *
15272  */
15273  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15274  __Pyx_GOTREF(__pyx_t_6);
15275  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_M); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15276  __Pyx_GOTREF(__pyx_t_8);
15277  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_8, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15278  __Pyx_GOTREF(__pyx_t_3);
15279  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15280  __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_v_i); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15281  __Pyx_GOTREF(__pyx_t_8);
15282  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15283  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15284  __Pyx_GOTREF(__pyx_t_3);
15285  __Pyx_GIVEREF(__pyx_t_8);
15286  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
15287  __Pyx_INCREF(__pyx_slice__71);
15288  __Pyx_GIVEREF(__pyx_slice__71);
15289  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__71);
15290  __pyx_t_8 = 0;
15291  __pyx_t_8 = PyObject_GetItem(__pyx_t_6, __pyx_t_3); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15292  __Pyx_GOTREF(__pyx_t_8);
15293  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15294  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15295  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15296  __Pyx_GOTREF(__pyx_t_3);
15297  __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_M, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15298  __Pyx_GOTREF(__pyx_t_6);
15299  __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_v_i); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15300  __Pyx_GOTREF(__pyx_t_5);
15301  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15302  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15303  __Pyx_GOTREF(__pyx_t_6);
15304  __Pyx_GIVEREF(__pyx_t_5);
15305  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
15306  __Pyx_INCREF(__pyx_slice__72);
15307  __Pyx_GIVEREF(__pyx_slice__72);
15308  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_slice__72);
15309  __pyx_t_5 = 0;
15310  if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_6, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15311  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15312  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15313  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15314 
15315  /* "WaveTools.pyx":688
15316  *
15317  * if (phiSymm):
15318  * for i in range(0,M): # <<<<<<<<<<<<<<
15319  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15320  *
15321  */
15322  }
15323  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15324 
15325  /* "WaveTools.pyx":687
15326  * sys.exit(1)
15327  *
15328  * if (phiSymm): # <<<<<<<<<<<<<<
15329  * for i in range(0,M):
15330  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:]
15331  */
15332  }
15333 
15334  /* "WaveTools.pyx":694
15335  *
15336  *
15337  * self.theta_m = reduceToIntervals(self.thetas,self.dth) # <<<<<<<<<<<<<<
15338  * if (spread_params == None):
15339  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15340  */
15341  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_reduceToIntervals); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15342  __Pyx_GOTREF(__pyx_t_8);
15343  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_thetas); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15344  __Pyx_GOTREF(__pyx_t_6);
15345  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dth); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15346  __Pyx_GOTREF(__pyx_t_3);
15347  __pyx_t_5 = NULL;
15348  __pyx_t_4 = 0;
15349  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15350  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
15351  if (likely(__pyx_t_5)) {
15352  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15353  __Pyx_INCREF(__pyx_t_5);
15354  __Pyx_INCREF(function);
15355  __Pyx_DECREF_SET(__pyx_t_8, function);
15356  __pyx_t_4 = 1;
15357  }
15358  }
15359  __pyx_t_1 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15360  __Pyx_GOTREF(__pyx_t_1);
15361  if (__pyx_t_5) {
15362  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5); __pyx_t_5 = NULL;
15363  }
15364  __Pyx_GIVEREF(__pyx_t_6);
15365  PyTuple_SET_ITEM(__pyx_t_1, 0+__pyx_t_4, __pyx_t_6);
15366  __Pyx_GIVEREF(__pyx_t_3);
15367  PyTuple_SET_ITEM(__pyx_t_1, 1+__pyx_t_4, __pyx_t_3);
15368  __pyx_t_6 = 0;
15369  __pyx_t_3 = 0;
15370  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15371  __Pyx_GOTREF(__pyx_t_2);
15372  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15373  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15374  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_theta_m, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15375  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15376 
15377  /* "WaveTools.pyx":695
15378  *
15379  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15380  * if (spread_params == None): # <<<<<<<<<<<<<<
15381  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15382  * else:
15383  */
15384  __pyx_t_2 = PyObject_RichCompare(__pyx_v_spread_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15385  __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_11 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15386  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15387  if (__pyx_t_11) {
15388 
15389  /* "WaveTools.pyx":696
15390  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15391  * if (spread_params == None):
15392  * self.Si_Sp = spread_fun(self.theta_m,self.fim) # <<<<<<<<<<<<<<
15393  * else:
15394  * try:
15395  */
15396  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15397  __Pyx_GOTREF(__pyx_t_8);
15398  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15399  __Pyx_GOTREF(__pyx_t_1);
15400  __Pyx_INCREF(__pyx_v_spread_fun);
15401  __pyx_t_3 = __pyx_v_spread_fun; __pyx_t_6 = NULL;
15402  __pyx_t_4 = 0;
15403  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
15404  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
15405  if (likely(__pyx_t_6)) {
15406  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
15407  __Pyx_INCREF(__pyx_t_6);
15408  __Pyx_INCREF(function);
15409  __Pyx_DECREF_SET(__pyx_t_3, function);
15410  __pyx_t_4 = 1;
15411  }
15412  }
15413  __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15414  __Pyx_GOTREF(__pyx_t_5);
15415  if (__pyx_t_6) {
15416  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_6); __pyx_t_6 = NULL;
15417  }
15418  __Pyx_GIVEREF(__pyx_t_8);
15419  PyTuple_SET_ITEM(__pyx_t_5, 0+__pyx_t_4, __pyx_t_8);
15420  __Pyx_GIVEREF(__pyx_t_1);
15421  PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_t_1);
15422  __pyx_t_8 = 0;
15423  __pyx_t_1 = 0;
15424  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15425  __Pyx_GOTREF(__pyx_t_2);
15426  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15427  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15428  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15429  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15430 
15431  /* "WaveTools.pyx":695
15432  *
15433  * self.theta_m = reduceToIntervals(self.thetas,self.dth)
15434  * if (spread_params == None): # <<<<<<<<<<<<<<
15435  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15436  * else:
15437  */
15438  goto __pyx_L9;
15439  }
15440 
15441  /* "WaveTools.pyx":698
15442  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15443  * else:
15444  * try: # <<<<<<<<<<<<<<
15445  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15446  * except:
15447  */
15448  /*else*/ {
15449  {
15450  __Pyx_ExceptionSave(&__pyx_t_12, &__pyx_t_13, &__pyx_t_14);
15451  __Pyx_XGOTREF(__pyx_t_12);
15452  __Pyx_XGOTREF(__pyx_t_13);
15453  __Pyx_XGOTREF(__pyx_t_14);
15454  /*try:*/ {
15455 
15456  /* "WaveTools.pyx":699
15457  * else:
15458  * try:
15459  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params) # <<<<<<<<<<<<<<
15460  * except:
15461  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15462  */
15463  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15464  __Pyx_GOTREF(__pyx_t_2);
15465  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15466  __Pyx_GOTREF(__pyx_t_3);
15467  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15468  __Pyx_GOTREF(__pyx_t_5);
15469  __Pyx_GIVEREF(__pyx_t_2);
15470  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2);
15471  __Pyx_GIVEREF(__pyx_t_3);
15472  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_3);
15473  __pyx_t_2 = 0;
15474  __pyx_t_3 = 0;
15475  if (unlikely(__pyx_v_spread_params == Py_None)) {
15476  PyErr_SetString(PyExc_TypeError, "argument after ** must be a mapping, not NoneType");
15477  {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15478  }
15479  if (likely(PyDict_CheckExact(__pyx_v_spread_params))) {
15480  __pyx_t_3 = PyDict_Copy(__pyx_v_spread_params); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15481  __Pyx_GOTREF(__pyx_t_3);
15482  } else {
15483  __pyx_t_3 = PyObject_CallFunctionObjArgs((PyObject*)&PyDict_Type, __pyx_v_spread_params, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15484  __Pyx_GOTREF(__pyx_t_3);
15485  }
15486  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_v_spread_fun, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15487  __Pyx_GOTREF(__pyx_t_2);
15488  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15489  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15490  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 699; __pyx_clineno = __LINE__; goto __pyx_L10_error;}
15491  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15492 
15493  /* "WaveTools.pyx":698
15494  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15495  * else:
15496  * try: # <<<<<<<<<<<<<<
15497  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15498  * except:
15499  */
15500  }
15501  __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
15502  __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
15503  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
15504  goto __pyx_L17_try_end;
15505  __pyx_L10_error:;
15506  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
15507  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
15508  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
15509  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
15510  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
15511  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
15512  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
15513 
15514  /* "WaveTools.pyx":700
15515  * try:
15516  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15517  * except: # <<<<<<<<<<<<<<
15518  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15519  * sys.exit(1)
15520  */
15521  /*except:*/ {
15522  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15523  if (__Pyx_GetException(&__pyx_t_2, &__pyx_t_3, &__pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 700; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15524  __Pyx_GOTREF(__pyx_t_2);
15525  __Pyx_GOTREF(__pyx_t_3);
15526  __Pyx_GOTREF(__pyx_t_5);
15527 
15528  /* "WaveTools.pyx":701
15529  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15530  * except:
15531  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName) # <<<<<<<<<<<<<<
15532  * sys.exit(1)
15533  *
15534  */
15535  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15536  __Pyx_GOTREF(__pyx_t_8);
15537  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Additional_spread_p, __pyx_v_spectName); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15538  __Pyx_GOTREF(__pyx_t_6);
15539  __pyx_t_7 = NULL;
15540  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15541  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15542  if (likely(__pyx_t_7)) {
15543  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15544  __Pyx_INCREF(__pyx_t_7);
15545  __Pyx_INCREF(function);
15546  __Pyx_DECREF_SET(__pyx_t_8, function);
15547  }
15548  }
15549  if (!__pyx_t_7) {
15550  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15551  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15552  __Pyx_GOTREF(__pyx_t_1);
15553  } else {
15554  __pyx_t_15 = PyTuple_New(1+1); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15555  __Pyx_GOTREF(__pyx_t_15);
15556  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_15, 0, __pyx_t_7); __pyx_t_7 = NULL;
15557  __Pyx_GIVEREF(__pyx_t_6);
15558  PyTuple_SET_ITEM(__pyx_t_15, 0+1, __pyx_t_6);
15559  __pyx_t_6 = 0;
15560  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_15, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 701; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15561  __Pyx_GOTREF(__pyx_t_1);
15562  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15563  }
15564  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15565  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15566 
15567  /* "WaveTools.pyx":702
15568  * except:
15569  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
15570  * sys.exit(1) # <<<<<<<<<<<<<<
15571  *
15572  * # Setting amplitudes
15573  */
15574  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15575  __Pyx_GOTREF(__pyx_t_1);
15576  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15577  __Pyx_GOTREF(__pyx_t_8);
15578  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15579  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__73, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L12_except_error;}
15580  __Pyx_GOTREF(__pyx_t_1);
15581  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15582  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15583  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15584  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15585  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15586  goto __pyx_L11_exception_handled;
15587  }
15588  __pyx_L12_except_error:;
15589 
15590  /* "WaveTools.pyx":698
15591  * self.Si_Sp = spread_fun(self.theta_m,self.fim)
15592  * else:
15593  * try: # <<<<<<<<<<<<<<
15594  * self.Si_Sp = spread_fun(self.theta_m,self.fim, **spread_params)
15595  * except:
15596  */
15597  __Pyx_XGIVEREF(__pyx_t_12);
15598  __Pyx_XGIVEREF(__pyx_t_13);
15599  __Pyx_XGIVEREF(__pyx_t_14);
15600  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
15601  goto __pyx_L1_error;
15602  __pyx_L11_exception_handled:;
15603  __Pyx_XGIVEREF(__pyx_t_12);
15604  __Pyx_XGIVEREF(__pyx_t_13);
15605  __Pyx_XGIVEREF(__pyx_t_14);
15606  __Pyx_ExceptionReset(__pyx_t_12, __pyx_t_13, __pyx_t_14);
15607  __pyx_L17_try_end:;
15608  }
15609  }
15610  __pyx_L9:;
15611 
15612  /* "WaveTools.pyx":706
15613  * # Setting amplitudes
15614  * #Normalising the spreading function
15615  * freq = range(0,self.N) # <<<<<<<<<<<<<<
15616  * # Normalising integral over all frequencies
15617  * for ii in freq:
15618  */
15619  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15620  __Pyx_GOTREF(__pyx_t_5);
15621  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15622  __Pyx_GOTREF(__pyx_t_3);
15623  __Pyx_INCREF(__pyx_int_0);
15624  __Pyx_GIVEREF(__pyx_int_0);
15625  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_int_0);
15626  __Pyx_GIVEREF(__pyx_t_5);
15627  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_5);
15628  __pyx_t_5 = 0;
15629  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15630  __Pyx_GOTREF(__pyx_t_5);
15631  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15632  __pyx_v_freq = __pyx_t_5;
15633  __pyx_t_5 = 0;
15634 
15635  /* "WaveTools.pyx":708
15636  * freq = range(0,self.N)
15637  * # Normalising integral over all frequencies
15638  * for ii in freq: # <<<<<<<<<<<<<<
15639  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15640  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15641  */
15642  if (likely(PyList_CheckExact(__pyx_v_freq)) || PyTuple_CheckExact(__pyx_v_freq)) {
15643  __pyx_t_5 = __pyx_v_freq; __Pyx_INCREF(__pyx_t_5); __pyx_t_4 = 0;
15644  __pyx_t_9 = NULL;
15645  } else {
15646  __pyx_t_4 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_freq); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15647  __Pyx_GOTREF(__pyx_t_5);
15648  __pyx_t_9 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15649  }
15650  for (;;) {
15651  if (likely(!__pyx_t_9)) {
15652  if (likely(PyList_CheckExact(__pyx_t_5))) {
15653  if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
15654  #if CYTHON_COMPILING_IN_CPYTHON
15655  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15656  #else
15657  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15658  __Pyx_GOTREF(__pyx_t_3);
15659  #endif
15660  } else {
15661  if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
15662  #if CYTHON_COMPILING_IN_CPYTHON
15663  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15664  #else
15665  __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15666  __Pyx_GOTREF(__pyx_t_3);
15667  #endif
15668  }
15669  } else {
15670  __pyx_t_3 = __pyx_t_9(__pyx_t_5);
15671  if (unlikely(!__pyx_t_3)) {
15672  PyObject* exc_type = PyErr_Occurred();
15673  if (exc_type) {
15674  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
15675  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15676  }
15677  break;
15678  }
15679  __Pyx_GOTREF(__pyx_t_3);
15680  }
15681  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_3);
15682  __pyx_t_3 = 0;
15683 
15684  /* "WaveTools.pyx":709
15685  * # Normalising integral over all frequencies
15686  * for ii in freq:
15687  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m) # <<<<<<<<<<<<<<
15688  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15689  * # Creating amplitudes spectrum
15690  */
15691  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_normIntegral); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15692  __Pyx_GOTREF(__pyx_t_2);
15693  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15694  __Pyx_GOTREF(__pyx_t_1);
15695  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15696  __Pyx_GOTREF(__pyx_t_8);
15697  __Pyx_INCREF(__pyx_slice__74);
15698  __Pyx_GIVEREF(__pyx_slice__74);
15699  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_slice__74);
15700  __Pyx_INCREF(__pyx_v_ii);
15701  __Pyx_GIVEREF(__pyx_v_ii);
15702  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
15703  __pyx_t_15 = PyObject_GetItem(__pyx_t_1, __pyx_t_8); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15704  __Pyx_GOTREF(__pyx_t_15);
15705  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
15706  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15707  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15708  __Pyx_GOTREF(__pyx_t_8);
15709  __pyx_t_1 = NULL;
15710  __pyx_t_10 = 0;
15711  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_2))) {
15712  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_2);
15713  if (likely(__pyx_t_1)) {
15714  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
15715  __Pyx_INCREF(__pyx_t_1);
15716  __Pyx_INCREF(function);
15717  __Pyx_DECREF_SET(__pyx_t_2, function);
15718  __pyx_t_10 = 1;
15719  }
15720  }
15721  __pyx_t_6 = PyTuple_New(2+__pyx_t_10); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15722  __Pyx_GOTREF(__pyx_t_6);
15723  if (__pyx_t_1) {
15724  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1); __pyx_t_1 = NULL;
15725  }
15726  __Pyx_GIVEREF(__pyx_t_15);
15727  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_10, __pyx_t_15);
15728  __Pyx_GIVEREF(__pyx_t_8);
15729  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_10, __pyx_t_8);
15730  __pyx_t_15 = 0;
15731  __pyx_t_8 = 0;
15732  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15733  __Pyx_GOTREF(__pyx_t_3);
15734  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15735  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15736  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15737  __Pyx_GOTREF(__pyx_t_2);
15738  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15739  __Pyx_GOTREF(__pyx_t_6);
15740  __Pyx_INCREF(__pyx_slice__75);
15741  __Pyx_GIVEREF(__pyx_slice__75);
15742  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__75);
15743  __Pyx_INCREF(__pyx_v_ii);
15744  __Pyx_GIVEREF(__pyx_v_ii);
15745  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ii);
15746  if (unlikely(PyObject_SetItem(__pyx_t_2, __pyx_t_6, __pyx_t_3) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15747  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15748  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15749  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15750 
15751  /* "WaveTools.pyx":710
15752  * for ii in freq:
15753  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15754  * self.Si_Sp[:,ii]*= self.Si_Jm[ii] # <<<<<<<<<<<<<<
15755  * # Creating amplitudes spectrum
15756  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
15757  */
15758  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15759  __Pyx_GOTREF(__pyx_t_3);
15760  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15761  __Pyx_GOTREF(__pyx_t_6);
15762  __Pyx_INCREF(__pyx_slice__76);
15763  __Pyx_GIVEREF(__pyx_slice__76);
15764  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_slice__76);
15765  __Pyx_INCREF(__pyx_v_ii);
15766  __Pyx_GIVEREF(__pyx_v_ii);
15767  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_ii);
15768  __pyx_t_2 = PyObject_GetItem(__pyx_t_3, __pyx_t_6); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15769  __Pyx_GOTREF(__pyx_t_2);
15770  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Jm); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15771  __Pyx_GOTREF(__pyx_t_8);
15772  __pyx_t_15 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_15 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
15773  __Pyx_GOTREF(__pyx_t_15);
15774  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15775  __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_2, __pyx_t_15); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15776  __Pyx_GOTREF(__pyx_t_8);
15777  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
15778  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
15779  if (unlikely(PyObject_SetItem(__pyx_t_3, __pyx_t_6, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15780  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15781  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15782  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15783 
15784  /* "WaveTools.pyx":708
15785  * freq = range(0,self.N)
15786  * # Normalising integral over all frequencies
15787  * for ii in freq: # <<<<<<<<<<<<<<
15788  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
15789  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15790  */
15791  }
15792  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15793 
15794  /* "WaveTools.pyx":712
15795  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
15796  * # Creating amplitudes spectrum
15797  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim)) # <<<<<<<<<<<<<<
15798  * def eta(self, x, t):
15799  * """Free surface displacement
15800  */
15801  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15802  __Pyx_GOTREF(__pyx_t_3);
15803  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15804  __Pyx_GOTREF(__pyx_t_6);
15805  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15806  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_returnRectangles3D); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15807  __Pyx_GOTREF(__pyx_t_8);
15808  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Si_Sp); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15809  __Pyx_GOTREF(__pyx_t_15);
15810  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_theta_m); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15811  __Pyx_GOTREF(__pyx_t_2);
15812  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_fim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15813  __Pyx_GOTREF(__pyx_t_1);
15814  __pyx_t_7 = NULL;
15815  __pyx_t_4 = 0;
15816  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
15817  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_8);
15818  if (likely(__pyx_t_7)) {
15819  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
15820  __Pyx_INCREF(__pyx_t_7);
15821  __Pyx_INCREF(function);
15822  __Pyx_DECREF_SET(__pyx_t_8, function);
15823  __pyx_t_4 = 1;
15824  }
15825  }
15826  __pyx_t_16 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15827  __Pyx_GOTREF(__pyx_t_16);
15828  if (__pyx_t_7) {
15829  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_7); __pyx_t_7 = NULL;
15830  }
15831  __Pyx_GIVEREF(__pyx_t_15);
15832  PyTuple_SET_ITEM(__pyx_t_16, 0+__pyx_t_4, __pyx_t_15);
15833  __Pyx_GIVEREF(__pyx_t_2);
15834  PyTuple_SET_ITEM(__pyx_t_16, 1+__pyx_t_4, __pyx_t_2);
15835  __Pyx_GIVEREF(__pyx_t_1);
15836  PyTuple_SET_ITEM(__pyx_t_16, 2+__pyx_t_4, __pyx_t_1);
15837  __pyx_t_15 = 0;
15838  __pyx_t_2 = 0;
15839  __pyx_t_1 = 0;
15840  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_16, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15841  __Pyx_GOTREF(__pyx_t_3);
15842  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
15843  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15844  __pyx_t_8 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15845  __Pyx_GOTREF(__pyx_t_8);
15846  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
15847  __pyx_t_3 = NULL;
15848  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
15849  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
15850  if (likely(__pyx_t_3)) {
15851  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
15852  __Pyx_INCREF(__pyx_t_3);
15853  __Pyx_INCREF(function);
15854  __Pyx_DECREF_SET(__pyx_t_6, function);
15855  }
15856  }
15857  if (!__pyx_t_3) {
15858  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15859  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
15860  __Pyx_GOTREF(__pyx_t_5);
15861  } else {
15862  __pyx_t_16 = PyTuple_New(1+1); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15863  __Pyx_GOTREF(__pyx_t_16);
15864  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_16, 0, __pyx_t_3); __pyx_t_3 = NULL;
15865  __Pyx_GIVEREF(__pyx_t_8);
15866  PyTuple_SET_ITEM(__pyx_t_16, 0+1, __pyx_t_8);
15867  __pyx_t_8 = 0;
15868  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_16, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15869  __Pyx_GOTREF(__pyx_t_5);
15870  __Pyx_DECREF(__pyx_t_16); __pyx_t_16 = 0;
15871  }
15872  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15873  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15874  __Pyx_GOTREF(__pyx_t_6);
15875  if (__Pyx_PyObject_SetSlice(__pyx_t_6, __pyx_t_5, 0, 0, NULL, NULL, &__pyx_slice__77, 0, 0, 1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
15876  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
15877  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
15878 
15879  /* "WaveTools.pyx":616
15880  *
15881  * """
15882  * def __init__(self, # <<<<<<<<<<<<<<
15883  * M, #half bin of frequencies
15884  * Tp, # np array with
15885  */
15886 
15887  /* function exit code */
15888  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
15889  goto __pyx_L0;
15890  __pyx_L1_error:;
15891  __Pyx_XDECREF(__pyx_t_1);
15892  __Pyx_XDECREF(__pyx_t_2);
15893  __Pyx_XDECREF(__pyx_t_3);
15894  __Pyx_XDECREF(__pyx_t_5);
15895  __Pyx_XDECREF(__pyx_t_6);
15896  __Pyx_XDECREF(__pyx_t_7);
15897  __Pyx_XDECREF(__pyx_t_8);
15898  __Pyx_XDECREF(__pyx_t_15);
15899  __Pyx_XDECREF(__pyx_t_16);
15900  __Pyx_AddTraceback("WaveTools.DirectionalWaves.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
15901  __pyx_r = NULL;
15902  __pyx_L0:;
15903  __Pyx_XDECREF(__pyx_v_validSpread);
15904  __Pyx_XDECREF(__pyx_v_spread_fun);
15905  __Pyx_XDECREF(__pyx_v_rotation3D);
15906  __Pyx_XDECREF(__pyx_v_temp_array);
15907  __Pyx_XDECREF(__pyx_v_directions);
15908  __Pyx_XDECREF(__pyx_v_rr);
15909  __Pyx_XDECREF(__pyx_v_theta);
15910  __Pyx_XDECREF(__pyx_v_i);
15911  __Pyx_XDECREF(__pyx_v_freq);
15912  __Pyx_XDECREF(__pyx_v_ii);
15913  __Pyx_XGIVEREF(__pyx_r);
15914  __Pyx_RefNannyFinishContext();
15915  return __pyx_r;
15916 }
15917 
15918 /* "WaveTools.pyx":713
15919  * # Creating amplitudes spectrum
15920  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
15921  * def eta(self, x, t): # <<<<<<<<<<<<<<
15922  * """Free surface displacement
15923  *
15924  */
15925 
15926 /* Python wrapper */
15927 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
15928 static char __pyx_doc_9WaveTools_16DirectionalWaves_2eta[] = "DirectionalWaves.eta(self, x, t)\nFree surface displacement\n\n :param x: floating point x coordinate\n :param t: time";
15929 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_3eta = {"eta", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_3eta, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_2eta};
15930 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_3eta(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
15931  PyObject *__pyx_v_self = 0;
15932  PyObject *__pyx_v_x = 0;
15933  PyObject *__pyx_v_t = 0;
15934  int __pyx_lineno = 0;
15935  const char *__pyx_filename = NULL;
15936  int __pyx_clineno = 0;
15937  PyObject *__pyx_r = 0;
15938  __Pyx_RefNannyDeclarations
15939  __Pyx_RefNannySetupContext("eta (wrapper)", 0);
15940  {
15941  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
15942  PyObject* values[3] = {0,0,0};
15943  if (unlikely(__pyx_kwds)) {
15944  Py_ssize_t kw_args;
15945  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
15946  switch (pos_args) {
15947  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15948  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15949  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15950  case 0: break;
15951  default: goto __pyx_L5_argtuple_error;
15952  }
15953  kw_args = PyDict_Size(__pyx_kwds);
15954  switch (pos_args) {
15955  case 0:
15956  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
15957  else goto __pyx_L5_argtuple_error;
15958  case 1:
15959  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
15960  else {
15961  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15962  }
15963  case 2:
15964  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
15965  else {
15966  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15967  }
15968  }
15969  if (unlikely(kw_args > 0)) {
15970  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eta") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15971  }
15972  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
15973  goto __pyx_L5_argtuple_error;
15974  } else {
15975  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
15976  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
15977  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
15978  }
15979  __pyx_v_self = values[0];
15980  __pyx_v_x = values[1];
15981  __pyx_v_t = values[2];
15982  }
15983  goto __pyx_L4_argument_unpacking_done;
15984  __pyx_L5_argtuple_error:;
15985  __Pyx_RaiseArgtupleInvalid("eta", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
15986  __pyx_L3_error:;
15987  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
15988  __Pyx_RefNannyFinishContext();
15989  return NULL;
15990  __pyx_L4_argument_unpacking_done:;
15991  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_2eta(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
15992 
15993  /* function exit code */
15994  __Pyx_RefNannyFinishContext();
15995  return __pyx_r;
15996 }
15997 
15998 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_2eta(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
15999  PyObject *__pyx_v_Eta = NULL;
16000  PyObject *__pyx_v_jj = NULL;
16001  PyObject *__pyx_v_ii = NULL;
16002  PyObject *__pyx_v_kDiri = NULL;
16003  PyObject *__pyx_r = NULL;
16004  __Pyx_RefNannyDeclarations
16005  PyObject *__pyx_t_1 = NULL;
16006  PyObject *__pyx_t_2 = NULL;
16007  Py_ssize_t __pyx_t_3;
16008  PyObject *(*__pyx_t_4)(PyObject *);
16009  PyObject *__pyx_t_5 = NULL;
16010  Py_ssize_t __pyx_t_6;
16011  PyObject *(*__pyx_t_7)(PyObject *);
16012  PyObject *__pyx_t_8 = NULL;
16013  PyObject *__pyx_t_9 = NULL;
16014  PyObject *__pyx_t_10 = NULL;
16015  PyObject *__pyx_t_11 = NULL;
16016  PyObject *__pyx_t_12 = NULL;
16017  PyObject *__pyx_t_13 = NULL;
16018  Py_ssize_t __pyx_t_14;
16019  int __pyx_lineno = 0;
16020  const char *__pyx_filename = NULL;
16021  int __pyx_clineno = 0;
16022  __Pyx_RefNannySetupContext("eta", 0);
16023 
16024  /* "WaveTools.pyx":718
16025  * :param x: floating point x coordinate
16026  * :param t: time"""
16027  * Eta=0. # <<<<<<<<<<<<<<
16028  * for jj in range(self.Mtot):
16029  * for ii in range(self.N):
16030  */
16031  __Pyx_INCREF(__pyx_float_0_);
16032  __pyx_v_Eta = __pyx_float_0_;
16033 
16034  /* "WaveTools.pyx":719
16035  * :param t: time"""
16036  * Eta=0.
16037  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16038  * for ii in range(self.N):
16039  * kDiri = self.waveDirs[jj]*self.ki[ii]
16040  */
16041  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16042  __Pyx_GOTREF(__pyx_t_1);
16043  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16044  __Pyx_GOTREF(__pyx_t_2);
16045  __Pyx_GIVEREF(__pyx_t_1);
16046  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
16047  __pyx_t_1 = 0;
16048  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16049  __Pyx_GOTREF(__pyx_t_1);
16050  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16051  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16052  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
16053  __pyx_t_4 = NULL;
16054  } else {
16055  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16056  __Pyx_GOTREF(__pyx_t_2);
16057  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16058  }
16059  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16060  for (;;) {
16061  if (likely(!__pyx_t_4)) {
16062  if (likely(PyList_CheckExact(__pyx_t_2))) {
16063  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
16064  #if CYTHON_COMPILING_IN_CPYTHON
16065  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16066  #else
16067  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16068  __Pyx_GOTREF(__pyx_t_1);
16069  #endif
16070  } else {
16071  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
16072  #if CYTHON_COMPILING_IN_CPYTHON
16073  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16074  #else
16075  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16076  __Pyx_GOTREF(__pyx_t_1);
16077  #endif
16078  }
16079  } else {
16080  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
16081  if (unlikely(!__pyx_t_1)) {
16082  PyObject* exc_type = PyErr_Occurred();
16083  if (exc_type) {
16084  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16085  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 719; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16086  }
16087  break;
16088  }
16089  __Pyx_GOTREF(__pyx_t_1);
16090  }
16091  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
16092  __pyx_t_1 = 0;
16093 
16094  /* "WaveTools.pyx":720
16095  * Eta=0.
16096  * for jj in range(self.Mtot):
16097  * for ii in range(self.N): # <<<<<<<<<<<<<<
16098  * kDiri = self.waveDirs[jj]*self.ki[ii]
16099  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16100  */
16101  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16102  __Pyx_GOTREF(__pyx_t_1);
16103  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16104  __Pyx_GOTREF(__pyx_t_5);
16105  __Pyx_GIVEREF(__pyx_t_1);
16106  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
16107  __pyx_t_1 = 0;
16108  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16109  __Pyx_GOTREF(__pyx_t_1);
16110  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16111  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16112  __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
16113  __pyx_t_7 = NULL;
16114  } else {
16115  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16116  __Pyx_GOTREF(__pyx_t_5);
16117  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16118  }
16119  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16120  for (;;) {
16121  if (likely(!__pyx_t_7)) {
16122  if (likely(PyList_CheckExact(__pyx_t_5))) {
16123  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
16124  #if CYTHON_COMPILING_IN_CPYTHON
16125  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16126  #else
16127  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16128  __Pyx_GOTREF(__pyx_t_1);
16129  #endif
16130  } else {
16131  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
16132  #if CYTHON_COMPILING_IN_CPYTHON
16133  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16134  #else
16135  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16136  __Pyx_GOTREF(__pyx_t_1);
16137  #endif
16138  }
16139  } else {
16140  __pyx_t_1 = __pyx_t_7(__pyx_t_5);
16141  if (unlikely(!__pyx_t_1)) {
16142  PyObject* exc_type = PyErr_Occurred();
16143  if (exc_type) {
16144  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16145  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 720; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16146  }
16147  break;
16148  }
16149  __Pyx_GOTREF(__pyx_t_1);
16150  }
16151  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
16152  __pyx_t_1 = 0;
16153 
16154  /* "WaveTools.pyx":721
16155  * for jj in range(self.Mtot):
16156  * for ii in range(self.N):
16157  * kDiri = self.waveDirs[jj]*self.ki[ii] # <<<<<<<<<<<<<<
16158  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16159  * return Eta
16160  */
16161  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16162  __Pyx_GOTREF(__pyx_t_1);
16163  __pyx_t_8 = PyObject_GetItem(__pyx_t_1, __pyx_v_jj); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16164  __Pyx_GOTREF(__pyx_t_8);
16165  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16166  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16167  __Pyx_GOTREF(__pyx_t_1);
16168  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16169  __Pyx_GOTREF(__pyx_t_9);
16170  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16171  __pyx_t_1 = PyNumber_Multiply(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 721; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16172  __Pyx_GOTREF(__pyx_t_1);
16173  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16174  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16175  __Pyx_XDECREF_SET(__pyx_v_kDiri, __pyx_t_1);
16176  __pyx_t_1 = 0;
16177 
16178  /* "WaveTools.pyx":722
16179  * for ii in range(self.N):
16180  * kDiri = self.waveDirs[jj]*self.ki[ii]
16181  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii]) # <<<<<<<<<<<<<<
16182  * return Eta
16183  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16184  */
16185  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16186  __Pyx_GOTREF(__pyx_t_9);
16187  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16188  __Pyx_GOTREF(__pyx_t_8);
16189  __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16190  __Pyx_GOTREF(__pyx_t_10);
16191  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16192  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16193  __Pyx_GOTREF(__pyx_t_8);
16194  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16195  __Pyx_GOTREF(__pyx_t_11);
16196  __Pyx_INCREF(__pyx_v_jj);
16197  __Pyx_GIVEREF(__pyx_v_jj);
16198  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_v_jj);
16199  __Pyx_INCREF(__pyx_v_ii);
16200  __Pyx_GIVEREF(__pyx_v_ii);
16201  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_v_ii);
16202  __pyx_t_12 = PyObject_GetItem(__pyx_t_8, __pyx_t_11); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16203  __Pyx_GOTREF(__pyx_t_12);
16204  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16205  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16206  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16207  __Pyx_GOTREF(__pyx_t_11);
16208  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16209  __Pyx_GOTREF(__pyx_t_8);
16210  __Pyx_INCREF(__pyx_v_jj);
16211  __Pyx_GIVEREF(__pyx_v_jj);
16212  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_jj);
16213  __Pyx_INCREF(__pyx_v_ii);
16214  __Pyx_GIVEREF(__pyx_v_ii);
16215  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
16216  __pyx_t_13 = PyObject_GetItem(__pyx_t_11, __pyx_t_8); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16217  __Pyx_GOTREF(__pyx_t_13);
16218  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16219  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16220  __pyx_t_8 = NULL;
16221  __pyx_t_14 = 0;
16222  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16223  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_9);
16224  if (likely(__pyx_t_8)) {
16225  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16226  __Pyx_INCREF(__pyx_t_8);
16227  __Pyx_INCREF(function);
16228  __Pyx_DECREF_SET(__pyx_t_9, function);
16229  __pyx_t_14 = 1;
16230  }
16231  }
16232  __pyx_t_11 = PyTuple_New(6+__pyx_t_14); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16233  __Pyx_GOTREF(__pyx_t_11);
16234  if (__pyx_t_8) {
16235  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
16236  }
16237  __Pyx_INCREF(__pyx_v_x);
16238  __Pyx_GIVEREF(__pyx_v_x);
16239  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_14, __pyx_v_x);
16240  __Pyx_INCREF(__pyx_v_t);
16241  __Pyx_GIVEREF(__pyx_v_t);
16242  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_14, __pyx_v_t);
16243  __Pyx_INCREF(__pyx_v_kDiri);
16244  __Pyx_GIVEREF(__pyx_v_kDiri);
16245  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_14, __pyx_v_kDiri);
16246  __Pyx_GIVEREF(__pyx_t_10);
16247  PyTuple_SET_ITEM(__pyx_t_11, 3+__pyx_t_14, __pyx_t_10);
16248  __Pyx_GIVEREF(__pyx_t_12);
16249  PyTuple_SET_ITEM(__pyx_t_11, 4+__pyx_t_14, __pyx_t_12);
16250  __Pyx_GIVEREF(__pyx_t_13);
16251  PyTuple_SET_ITEM(__pyx_t_11, 5+__pyx_t_14, __pyx_t_13);
16252  __pyx_t_10 = 0;
16253  __pyx_t_12 = 0;
16254  __pyx_t_13 = 0;
16255  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_11, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16256  __Pyx_GOTREF(__pyx_t_1);
16257  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
16258  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16259  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 722; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16260  __Pyx_GOTREF(__pyx_t_9);
16261  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16262  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_9);
16263  __pyx_t_9 = 0;
16264 
16265  /* "WaveTools.pyx":720
16266  * Eta=0.
16267  * for jj in range(self.Mtot):
16268  * for ii in range(self.N): # <<<<<<<<<<<<<<
16269  * kDiri = self.waveDirs[jj]*self.ki[ii]
16270  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16271  */
16272  }
16273  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16274 
16275  /* "WaveTools.pyx":719
16276  * :param t: time"""
16277  * Eta=0.
16278  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16279  * for ii in range(self.N):
16280  * kDiri = self.waveDirs[jj]*self.ki[ii]
16281  */
16282  }
16283  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16284 
16285  /* "WaveTools.pyx":723
16286  * kDiri = self.waveDirs[jj]*self.ki[ii]
16287  * Eta+= eta_mode(x,t,kDiri,self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii])
16288  * return Eta # <<<<<<<<<<<<<<
16289  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16290  *
16291  */
16292  __Pyx_XDECREF(__pyx_r);
16293  __Pyx_INCREF(__pyx_v_Eta);
16294  __pyx_r = __pyx_v_Eta;
16295  goto __pyx_L0;
16296 
16297  /* "WaveTools.pyx":713
16298  * # Creating amplitudes spectrum
16299  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
16300  * def eta(self, x, t): # <<<<<<<<<<<<<<
16301  * """Free surface displacement
16302  *
16303  */
16304 
16305  /* function exit code */
16306  __pyx_L1_error:;
16307  __Pyx_XDECREF(__pyx_t_1);
16308  __Pyx_XDECREF(__pyx_t_2);
16309  __Pyx_XDECREF(__pyx_t_5);
16310  __Pyx_XDECREF(__pyx_t_8);
16311  __Pyx_XDECREF(__pyx_t_9);
16312  __Pyx_XDECREF(__pyx_t_10);
16313  __Pyx_XDECREF(__pyx_t_11);
16314  __Pyx_XDECREF(__pyx_t_12);
16315  __Pyx_XDECREF(__pyx_t_13);
16316  __Pyx_AddTraceback("WaveTools.DirectionalWaves.eta", __pyx_clineno, __pyx_lineno, __pyx_filename);
16317  __pyx_r = NULL;
16318  __pyx_L0:;
16319  __Pyx_XDECREF(__pyx_v_Eta);
16320  __Pyx_XDECREF(__pyx_v_jj);
16321  __Pyx_XDECREF(__pyx_v_ii);
16322  __Pyx_XDECREF(__pyx_v_kDiri);
16323  __Pyx_XGIVEREF(__pyx_r);
16324  __Pyx_RefNannyFinishContext();
16325  return __pyx_r;
16326 }
16327 
16328 /* "WaveTools.pyx":726
16329  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16330  *
16331  * def u(self, x, t): # <<<<<<<<<<<<<<
16332  * """x-component of velocity
16333  *
16334  */
16335 
16336 /* Python wrapper */
16337 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16338 static char __pyx_doc_9WaveTools_16DirectionalWaves_4u[] = "DirectionalWaves.u(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
16339 static PyMethodDef __pyx_mdef_9WaveTools_16DirectionalWaves_5u = {"u", (PyCFunction)__pyx_pw_9WaveTools_16DirectionalWaves_5u, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_16DirectionalWaves_4u};
16340 static PyObject *__pyx_pw_9WaveTools_16DirectionalWaves_5u(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16341  PyObject *__pyx_v_self = 0;
16342  PyObject *__pyx_v_x = 0;
16343  PyObject *__pyx_v_t = 0;
16344  int __pyx_lineno = 0;
16345  const char *__pyx_filename = NULL;
16346  int __pyx_clineno = 0;
16347  PyObject *__pyx_r = 0;
16348  __Pyx_RefNannyDeclarations
16349  __Pyx_RefNannySetupContext("u (wrapper)", 0);
16350  {
16351  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
16352  PyObject* values[3] = {0,0,0};
16353  if (unlikely(__pyx_kwds)) {
16354  Py_ssize_t kw_args;
16355  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16356  switch (pos_args) {
16357  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16358  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16359  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16360  case 0: break;
16361  default: goto __pyx_L5_argtuple_error;
16362  }
16363  kw_args = PyDict_Size(__pyx_kwds);
16364  switch (pos_args) {
16365  case 0:
16366  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
16367  else goto __pyx_L5_argtuple_error;
16368  case 1:
16369  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
16370  else {
16371  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16372  }
16373  case 2:
16374  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
16375  else {
16376  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16377  }
16378  }
16379  if (unlikely(kw_args > 0)) {
16380  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "u") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16381  }
16382  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
16383  goto __pyx_L5_argtuple_error;
16384  } else {
16385  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16386  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16387  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16388  }
16389  __pyx_v_self = values[0];
16390  __pyx_v_x = values[1];
16391  __pyx_v_t = values[2];
16392  }
16393  goto __pyx_L4_argument_unpacking_done;
16394  __pyx_L5_argtuple_error:;
16395  __Pyx_RaiseArgtupleInvalid("u", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16396  __pyx_L3_error:;
16397  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
16398  __Pyx_RefNannyFinishContext();
16399  return NULL;
16400  __pyx_L4_argument_unpacking_done:;
16401  __pyx_r = __pyx_pf_9WaveTools_16DirectionalWaves_4u(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
16402 
16403  /* function exit code */
16404  __Pyx_RefNannyFinishContext();
16405  return __pyx_r;
16406 }
16407 
16408 static PyObject *__pyx_pf_9WaveTools_16DirectionalWaves_4u(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
16409  PyObject *__pyx_v_U = NULL;
16410  PyObject *__pyx_v_jj = NULL;
16411  PyObject *__pyx_v_ii = NULL;
16412  PyObject *__pyx_v_kDiri = NULL;
16413  PyObject *__pyx_r = NULL;
16414  __Pyx_RefNannyDeclarations
16415  PyObject *__pyx_t_1 = NULL;
16416  PyObject *__pyx_t_2 = NULL;
16417  Py_ssize_t __pyx_t_3;
16418  PyObject *(*__pyx_t_4)(PyObject *);
16419  PyObject *__pyx_t_5 = NULL;
16420  Py_ssize_t __pyx_t_6;
16421  PyObject *(*__pyx_t_7)(PyObject *);
16422  PyObject *__pyx_t_8 = NULL;
16423  PyObject *__pyx_t_9 = NULL;
16424  PyObject *__pyx_t_10 = NULL;
16425  PyObject *__pyx_t_11 = NULL;
16426  PyObject *__pyx_t_12 = NULL;
16427  PyObject *__pyx_t_13 = NULL;
16428  PyObject *__pyx_t_14 = NULL;
16429  PyObject *__pyx_t_15 = NULL;
16430  PyObject *__pyx_t_16 = NULL;
16431  PyObject *__pyx_t_17 = NULL;
16432  Py_ssize_t __pyx_t_18;
16433  PyObject *__pyx_t_19 = NULL;
16434  int __pyx_lineno = 0;
16435  const char *__pyx_filename = NULL;
16436  int __pyx_clineno = 0;
16437  __Pyx_RefNannySetupContext("u", 0);
16438 
16439  /* "WaveTools.pyx":733
16440  * :param t: time
16441  * """
16442  * U=0. # <<<<<<<<<<<<<<
16443  * for jj in range(self.Mtot):
16444  * for ii in range(self.N):
16445  */
16446  __Pyx_INCREF(__pyx_float_0_);
16447  __pyx_v_U = __pyx_float_0_;
16448 
16449  /* "WaveTools.pyx":734
16450  * """
16451  * U=0.
16452  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16453  * for ii in range(self.N):
16454  * kDiri = self.waveDirs[jj]*self.ki[ii]
16455  */
16456  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Mtot); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16457  __Pyx_GOTREF(__pyx_t_1);
16458  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16459  __Pyx_GOTREF(__pyx_t_2);
16460  __Pyx_GIVEREF(__pyx_t_1);
16461  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
16462  __pyx_t_1 = 0;
16463  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16464  __Pyx_GOTREF(__pyx_t_1);
16465  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16466  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16467  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
16468  __pyx_t_4 = NULL;
16469  } else {
16470  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16471  __Pyx_GOTREF(__pyx_t_2);
16472  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16473  }
16474  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16475  for (;;) {
16476  if (likely(!__pyx_t_4)) {
16477  if (likely(PyList_CheckExact(__pyx_t_2))) {
16478  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
16479  #if CYTHON_COMPILING_IN_CPYTHON
16480  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16481  #else
16482  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16483  __Pyx_GOTREF(__pyx_t_1);
16484  #endif
16485  } else {
16486  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
16487  #if CYTHON_COMPILING_IN_CPYTHON
16488  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16489  #else
16490  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16491  __Pyx_GOTREF(__pyx_t_1);
16492  #endif
16493  }
16494  } else {
16495  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
16496  if (unlikely(!__pyx_t_1)) {
16497  PyObject* exc_type = PyErr_Occurred();
16498  if (exc_type) {
16499  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16500  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 734; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16501  }
16502  break;
16503  }
16504  __Pyx_GOTREF(__pyx_t_1);
16505  }
16506  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_1);
16507  __pyx_t_1 = 0;
16508 
16509  /* "WaveTools.pyx":735
16510  * U=0.
16511  * for jj in range(self.Mtot):
16512  * for ii in range(self.N): # <<<<<<<<<<<<<<
16513  * kDiri = self.waveDirs[jj]*self.ki[ii]
16514  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16515  */
16516  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16517  __Pyx_GOTREF(__pyx_t_1);
16518  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16519  __Pyx_GOTREF(__pyx_t_5);
16520  __Pyx_GIVEREF(__pyx_t_1);
16521  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
16522  __pyx_t_1 = 0;
16523  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16524  __Pyx_GOTREF(__pyx_t_1);
16525  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16526  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
16527  __pyx_t_5 = __pyx_t_1; __Pyx_INCREF(__pyx_t_5); __pyx_t_6 = 0;
16528  __pyx_t_7 = NULL;
16529  } else {
16530  __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16531  __Pyx_GOTREF(__pyx_t_5);
16532  __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16533  }
16534  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16535  for (;;) {
16536  if (likely(!__pyx_t_7)) {
16537  if (likely(PyList_CheckExact(__pyx_t_5))) {
16538  if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_5)) break;
16539  #if CYTHON_COMPILING_IN_CPYTHON
16540  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16541  #else
16542  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16543  __Pyx_GOTREF(__pyx_t_1);
16544  #endif
16545  } else {
16546  if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
16547  #if CYTHON_COMPILING_IN_CPYTHON
16548  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16549  #else
16550  __pyx_t_1 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16551  __Pyx_GOTREF(__pyx_t_1);
16552  #endif
16553  }
16554  } else {
16555  __pyx_t_1 = __pyx_t_7(__pyx_t_5);
16556  if (unlikely(!__pyx_t_1)) {
16557  PyObject* exc_type = PyErr_Occurred();
16558  if (exc_type) {
16559  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
16560  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16561  }
16562  break;
16563  }
16564  __Pyx_GOTREF(__pyx_t_1);
16565  }
16566  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
16567  __pyx_t_1 = 0;
16568 
16569  /* "WaveTools.pyx":736
16570  * for jj in range(self.Mtot):
16571  * for ii in range(self.N):
16572  * kDiri = self.waveDirs[jj]*self.ki[ii] # <<<<<<<<<<<<<<
16573  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16574  * return U
16575  */
16576  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDirs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16577  __Pyx_GOTREF(__pyx_t_1);
16578  __pyx_t_8 = PyObject_GetItem(__pyx_t_1, __pyx_v_jj); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16579  __Pyx_GOTREF(__pyx_t_8);
16580  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16581  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16582  __Pyx_GOTREF(__pyx_t_1);
16583  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16584  __Pyx_GOTREF(__pyx_t_9);
16585  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16586  __pyx_t_1 = PyNumber_Multiply(__pyx_t_8, __pyx_t_9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 736; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16587  __Pyx_GOTREF(__pyx_t_1);
16588  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16589  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16590  __Pyx_XDECREF_SET(__pyx_v_kDiri, __pyx_t_1);
16591  __pyx_t_1 = 0;
16592 
16593  /* "WaveTools.pyx":737
16594  * for ii in range(self.N):
16595  * kDiri = self.waveDirs[jj]*self.ki[ii]
16596  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
16597  * return U
16598  *
16599  */
16600  __pyx_t_9 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16601  __Pyx_GOTREF(__pyx_t_9);
16602  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16603  __Pyx_GOTREF(__pyx_t_8);
16604  __pyx_t_10 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16605  __Pyx_GOTREF(__pyx_t_10);
16606  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16607  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16608  __Pyx_GOTREF(__pyx_t_8);
16609  __pyx_t_11 = PyObject_GetItem(__pyx_t_8, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16610  __Pyx_GOTREF(__pyx_t_11);
16611  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16612  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phiDirs); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16613  __Pyx_GOTREF(__pyx_t_8);
16614  __pyx_t_12 = PyTuple_New(2); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16615  __Pyx_GOTREF(__pyx_t_12);
16616  __Pyx_INCREF(__pyx_v_jj);
16617  __Pyx_GIVEREF(__pyx_v_jj);
16618  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_v_jj);
16619  __Pyx_INCREF(__pyx_v_ii);
16620  __Pyx_GIVEREF(__pyx_v_ii);
16621  PyTuple_SET_ITEM(__pyx_t_12, 1, __pyx_v_ii);
16622  __pyx_t_13 = PyObject_GetItem(__pyx_t_8, __pyx_t_12); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16623  __Pyx_GOTREF(__pyx_t_13);
16624  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16625  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
16626  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_aiDirs); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16627  __Pyx_GOTREF(__pyx_t_12);
16628  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16629  __Pyx_GOTREF(__pyx_t_8);
16630  __Pyx_INCREF(__pyx_v_jj);
16631  __Pyx_GIVEREF(__pyx_v_jj);
16632  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_jj);
16633  __Pyx_INCREF(__pyx_v_ii);
16634  __Pyx_GIVEREF(__pyx_v_ii);
16635  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_v_ii);
16636  __pyx_t_14 = PyObject_GetItem(__pyx_t_12, __pyx_t_8); if (unlikely(__pyx_t_14 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
16637  __Pyx_GOTREF(__pyx_t_14);
16638  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
16639  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
16640  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16641  __Pyx_GOTREF(__pyx_t_8);
16642  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16643  __Pyx_GOTREF(__pyx_t_12);
16644  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16645  __Pyx_GOTREF(__pyx_t_15);
16646  __pyx_t_16 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16647  __Pyx_GOTREF(__pyx_t_16);
16648  __pyx_t_17 = NULL;
16649  __pyx_t_18 = 0;
16650  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_9))) {
16651  __pyx_t_17 = PyMethod_GET_SELF(__pyx_t_9);
16652  if (likely(__pyx_t_17)) {
16653  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
16654  __Pyx_INCREF(__pyx_t_17);
16655  __Pyx_INCREF(function);
16656  __Pyx_DECREF_SET(__pyx_t_9, function);
16657  __pyx_t_18 = 1;
16658  }
16659  }
16660  __pyx_t_19 = PyTuple_New(11+__pyx_t_18); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16661  __Pyx_GOTREF(__pyx_t_19);
16662  if (__pyx_t_17) {
16663  __Pyx_GIVEREF(__pyx_t_17); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_17); __pyx_t_17 = NULL;
16664  }
16665  __Pyx_INCREF(__pyx_v_x);
16666  __Pyx_GIVEREF(__pyx_v_x);
16667  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_18, __pyx_v_x);
16668  __Pyx_INCREF(__pyx_v_t);
16669  __Pyx_GIVEREF(__pyx_v_t);
16670  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_18, __pyx_v_t);
16671  __Pyx_INCREF(__pyx_v_kDiri);
16672  __Pyx_GIVEREF(__pyx_v_kDiri);
16673  PyTuple_SET_ITEM(__pyx_t_19, 2+__pyx_t_18, __pyx_v_kDiri);
16674  __Pyx_GIVEREF(__pyx_t_10);
16675  PyTuple_SET_ITEM(__pyx_t_19, 3+__pyx_t_18, __pyx_t_10);
16676  __Pyx_GIVEREF(__pyx_t_11);
16677  PyTuple_SET_ITEM(__pyx_t_19, 4+__pyx_t_18, __pyx_t_11);
16678  __Pyx_GIVEREF(__pyx_t_13);
16679  PyTuple_SET_ITEM(__pyx_t_19, 5+__pyx_t_18, __pyx_t_13);
16680  __Pyx_GIVEREF(__pyx_t_14);
16681  PyTuple_SET_ITEM(__pyx_t_19, 6+__pyx_t_18, __pyx_t_14);
16682  __Pyx_GIVEREF(__pyx_t_8);
16683  PyTuple_SET_ITEM(__pyx_t_19, 7+__pyx_t_18, __pyx_t_8);
16684  __Pyx_GIVEREF(__pyx_t_12);
16685  PyTuple_SET_ITEM(__pyx_t_19, 8+__pyx_t_18, __pyx_t_12);
16686  __Pyx_GIVEREF(__pyx_t_15);
16687  PyTuple_SET_ITEM(__pyx_t_19, 9+__pyx_t_18, __pyx_t_15);
16688  __Pyx_GIVEREF(__pyx_t_16);
16689  PyTuple_SET_ITEM(__pyx_t_19, 10+__pyx_t_18, __pyx_t_16);
16690  __pyx_t_10 = 0;
16691  __pyx_t_11 = 0;
16692  __pyx_t_13 = 0;
16693  __pyx_t_14 = 0;
16694  __pyx_t_8 = 0;
16695  __pyx_t_12 = 0;
16696  __pyx_t_15 = 0;
16697  __pyx_t_16 = 0;
16698  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_19, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16699  __Pyx_GOTREF(__pyx_t_1);
16700  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
16701  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
16702  __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
16703  __Pyx_GOTREF(__pyx_t_9);
16704  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
16705  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_9);
16706  __pyx_t_9 = 0;
16707 
16708  /* "WaveTools.pyx":735
16709  * U=0.
16710  * for jj in range(self.Mtot):
16711  * for ii in range(self.N): # <<<<<<<<<<<<<<
16712  * kDiri = self.waveDirs[jj]*self.ki[ii]
16713  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16714  */
16715  }
16716  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
16717 
16718  /* "WaveTools.pyx":734
16719  * """
16720  * U=0.
16721  * for jj in range(self.Mtot): # <<<<<<<<<<<<<<
16722  * for ii in range(self.N):
16723  * kDiri = self.waveDirs[jj]*self.ki[ii]
16724  */
16725  }
16726  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
16727 
16728  /* "WaveTools.pyx":738
16729  * kDiri = self.waveDirs[jj]*self.ki[ii]
16730  * U+= vel_mode(x,t,kDiri, self.ki[ii],self.omega[ii],self.phiDirs[jj,ii],self.aiDirs[jj,ii],self.mwl,self.depth,self.g,self.vDir)
16731  * return U # <<<<<<<<<<<<<<
16732  *
16733  *
16734  */
16735  __Pyx_XDECREF(__pyx_r);
16736  __Pyx_INCREF(__pyx_v_U);
16737  __pyx_r = __pyx_v_U;
16738  goto __pyx_L0;
16739 
16740  /* "WaveTools.pyx":726
16741  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
16742  *
16743  * def u(self, x, t): # <<<<<<<<<<<<<<
16744  * """x-component of velocity
16745  *
16746  */
16747 
16748  /* function exit code */
16749  __pyx_L1_error:;
16750  __Pyx_XDECREF(__pyx_t_1);
16751  __Pyx_XDECREF(__pyx_t_2);
16752  __Pyx_XDECREF(__pyx_t_5);
16753  __Pyx_XDECREF(__pyx_t_8);
16754  __Pyx_XDECREF(__pyx_t_9);
16755  __Pyx_XDECREF(__pyx_t_10);
16756  __Pyx_XDECREF(__pyx_t_11);
16757  __Pyx_XDECREF(__pyx_t_12);
16758  __Pyx_XDECREF(__pyx_t_13);
16759  __Pyx_XDECREF(__pyx_t_14);
16760  __Pyx_XDECREF(__pyx_t_15);
16761  __Pyx_XDECREF(__pyx_t_16);
16762  __Pyx_XDECREF(__pyx_t_17);
16763  __Pyx_XDECREF(__pyx_t_19);
16764  __Pyx_AddTraceback("WaveTools.DirectionalWaves.u", __pyx_clineno, __pyx_lineno, __pyx_filename);
16765  __pyx_r = NULL;
16766  __pyx_L0:;
16767  __Pyx_XDECREF(__pyx_v_U);
16768  __Pyx_XDECREF(__pyx_v_jj);
16769  __Pyx_XDECREF(__pyx_v_ii);
16770  __Pyx_XDECREF(__pyx_v_kDiri);
16771  __Pyx_XGIVEREF(__pyx_r);
16772  __Pyx_RefNannyFinishContext();
16773  return __pyx_r;
16774 }
16775 
16776 /* "WaveTools.pyx":761
16777  * """
16778  *
16779  * def __init__(self, # <<<<<<<<<<<<<<
16780  * timeSeriesFile, # e.g.= "Timeseries.txt",
16781  * skiprows,
16782  */
16783 
16784 /* Python wrapper */
16785 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
16786 static char __pyx_doc_9WaveTools_10TimeSeries___init__[] = "TimeSeries.__init__(self, timeSeriesFile, skiprows, timeSeriesPosition, depth, N, mwl, waveDir, g, rec_direct=True, window_params=None)";
16787 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_1__init__ = {"__init__", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_1__init__, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries___init__};
16788 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_1__init__(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
16789  PyObject *__pyx_v_self = 0;
16790  PyObject *__pyx_v_timeSeriesFile = 0;
16791  PyObject *__pyx_v_skiprows = 0;
16792  PyObject *__pyx_v_timeSeriesPosition = 0;
16793  PyObject *__pyx_v_depth = 0;
16794  PyObject *__pyx_v_N = 0;
16795  PyObject *__pyx_v_mwl = 0;
16796  PyObject *__pyx_v_waveDir = 0;
16797  PyObject *__pyx_v_g = 0;
16798  PyObject *__pyx_v_rec_direct = 0;
16799  PyObject *__pyx_v_window_params = 0;
16800  int __pyx_lineno = 0;
16801  const char *__pyx_filename = NULL;
16802  int __pyx_clineno = 0;
16803  PyObject *__pyx_r = 0;
16804  __Pyx_RefNannyDeclarations
16805  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
16806  {
16807  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_timeSeriesFile,&__pyx_n_s_skiprows,&__pyx_n_s_timeSeriesPosition,&__pyx_n_s_depth,&__pyx_n_s_N,&__pyx_n_s_mwl,&__pyx_n_s_waveDir,&__pyx_n_s_g,&__pyx_n_s_rec_direct,&__pyx_n_s_window_params,0};
16808  PyObject* values[11] = {0,0,0,0,0,0,0,0,0,0,0};
16809 
16810  /* "WaveTools.pyx":770
16811  * waveDir,
16812  * g,
16813  * rec_direct = True, # <<<<<<<<<<<<<<
16814  * window_params = None #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff}
16815  * ):
16816  */
16817  values[9] = ((PyObject *)((PyObject *)Py_True));
16818 
16819  /* "WaveTools.pyx":771
16820  * g,
16821  * rec_direct = True,
16822  * window_params = None #If rec_direct = False then wind_params = {"Nwaves":Nwaves,"Tm":Tm,"Window":wind_filt,"Overlap":overlap,"Cutoff":cutoff} # <<<<<<<<<<<<<<
16823  * ):
16824  *
16825  */
16826  values[10] = ((PyObject *)((PyObject *)Py_None));
16827  if (unlikely(__pyx_kwds)) {
16828  Py_ssize_t kw_args;
16829  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
16830  switch (pos_args) {
16831  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16832  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16833  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16834  case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16835  case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16836  case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16837  case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16838  case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16839  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16840  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16841  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16842  case 0: break;
16843  default: goto __pyx_L5_argtuple_error;
16844  }
16845  kw_args = PyDict_Size(__pyx_kwds);
16846  switch (pos_args) {
16847  case 0:
16848  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
16849  else goto __pyx_L5_argtuple_error;
16850  case 1:
16851  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeSeriesFile)) != 0)) kw_args--;
16852  else {
16853  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16854  }
16855  case 2:
16856  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_skiprows)) != 0)) kw_args--;
16857  else {
16858  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16859  }
16860  case 3:
16861  if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_timeSeriesPosition)) != 0)) kw_args--;
16862  else {
16863  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 3); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16864  }
16865  case 4:
16866  if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--;
16867  else {
16868  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 4); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16869  }
16870  case 5:
16871  if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_N)) != 0)) kw_args--;
16872  else {
16873  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 5); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16874  }
16875  case 6:
16876  if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mwl)) != 0)) kw_args--;
16877  else {
16878  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 6); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16879  }
16880  case 7:
16881  if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_waveDir)) != 0)) kw_args--;
16882  else {
16883  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 7); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16884  }
16885  case 8:
16886  if (likely((values[8] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_g)) != 0)) kw_args--;
16887  else {
16888  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, 8); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16889  }
16890  case 9:
16891  if (kw_args > 0) {
16892  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rec_direct);
16893  if (value) { values[9] = value; kw_args--; }
16894  }
16895  case 10:
16896  if (kw_args > 0) {
16897  PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_window_params);
16898  if (value) { values[10] = value; kw_args--; }
16899  }
16900  }
16901  if (unlikely(kw_args > 0)) {
16902  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16903  }
16904  } else {
16905  switch (PyTuple_GET_SIZE(__pyx_args)) {
16906  case 11: values[10] = PyTuple_GET_ITEM(__pyx_args, 10);
16907  case 10: values[9] = PyTuple_GET_ITEM(__pyx_args, 9);
16908  case 9: values[8] = PyTuple_GET_ITEM(__pyx_args, 8);
16909  values[7] = PyTuple_GET_ITEM(__pyx_args, 7);
16910  values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
16911  values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
16912  values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
16913  values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
16914  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
16915  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
16916  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
16917  break;
16918  default: goto __pyx_L5_argtuple_error;
16919  }
16920  }
16921  __pyx_v_self = values[0];
16922  __pyx_v_timeSeriesFile = values[1];
16923  __pyx_v_skiprows = values[2];
16924  __pyx_v_timeSeriesPosition = values[3];
16925  __pyx_v_depth = values[4];
16926  __pyx_v_N = values[5];
16927  __pyx_v_mwl = values[6];
16928  __pyx_v_waveDir = values[7];
16929  __pyx_v_g = values[8];
16930  __pyx_v_rec_direct = values[9];
16931  __pyx_v_window_params = values[10];
16932  }
16933  goto __pyx_L4_argument_unpacking_done;
16934  __pyx_L5_argtuple_error:;
16935  __Pyx_RaiseArgtupleInvalid("__init__", 0, 9, 11, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
16936  __pyx_L3_error:;
16937  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
16938  __Pyx_RefNannyFinishContext();
16939  return NULL;
16940  __pyx_L4_argument_unpacking_done:;
16941  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries___init__(__pyx_self, __pyx_v_self, __pyx_v_timeSeriesFile, __pyx_v_skiprows, __pyx_v_timeSeriesPosition, __pyx_v_depth, __pyx_v_N, __pyx_v_mwl, __pyx_v_waveDir, __pyx_v_g, __pyx_v_rec_direct, __pyx_v_window_params);
16942 
16943  /* "WaveTools.pyx":761
16944  * """
16945  *
16946  * def __init__(self, # <<<<<<<<<<<<<<
16947  * timeSeriesFile, # e.g.= "Timeseries.txt",
16948  * skiprows,
16949  */
16950 
16951  /* function exit code */
16952  __Pyx_RefNannyFinishContext();
16953  return __pyx_r;
16954 }
16955 
16956 static PyObject *__pyx_pf_9WaveTools_10TimeSeries___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_timeSeriesFile, PyObject *__pyx_v_skiprows, PyObject *__pyx_v_timeSeriesPosition, PyObject *__pyx_v_depth, PyObject *__pyx_v_N, PyObject *__pyx_v_mwl, PyObject *__pyx_v_waveDir, PyObject *__pyx_v_g, PyObject *__pyx_v_rec_direct, PyObject *__pyx_v_window_params) {
16957  PyObject *__pyx_v_filetype = NULL;
16958  PyObject *__pyx_v_fid = NULL;
16959  PyObject *__pyx_v_tdata = NULL;
16960  Py_ssize_t __pyx_v_ncols;
16961  PyObject *__pyx_v_time_temp = NULL;
16962  int __pyx_v_doInterp;
16963  PyObject *__pyx_v_i = NULL;
16964  PyObject *__pyx_v_dt_temp = NULL;
16965  PyObject *__pyx_v_Nf = NULL;
16966  PyObject *__pyx_v_ipeak = NULL;
16967  PyObject *__pyx_v_imax = NULL;
16968  PyObject *__pyx_v_imin = NULL;
16969  Py_ssize_t __pyx_v_ii;
16970  PyObject *__pyx_v_validWindows = NULL;
16971  PyObject *__pyx_v_wind_filt = NULL;
16972  PyObject *__pyx_v_diff = NULL;
16973  PyObject *__pyx_v_jj = NULL;
16974  PyObject *__pyx_v_span = NULL;
16975  PyObject *__pyx_v_tfirst = NULL;
16976  PyObject *__pyx_v_tlast = NULL;
16977  PyObject *__pyx_v_ispan1 = NULL;
16978  PyObject *__pyx_v_ispan2 = NULL;
16979  PyObject *__pyx_v_tstart = NULL;
16980  PyObject *__pyx_v_wind = NULL;
16981  PyObject *__pyx_v_decomp = NULL;
16982  PyObject *__pyx_v_Nftemp = NULL;
16983  PyObject *__pyx_v_ki = NULL;
16984  PyObject *__pyx_v_kDir = NULL;
16985  PyObject *__pyx_r = NULL;
16986  __Pyx_RefNannyDeclarations
16987  Py_ssize_t __pyx_t_1;
16988  int __pyx_t_2;
16989  PyObject *__pyx_t_3 = NULL;
16990  PyObject *__pyx_t_4 = NULL;
16991  PyObject *__pyx_t_5 = NULL;
16992  PyObject *__pyx_t_6 = NULL;
16993  PyObject *__pyx_t_7 = NULL;
16994  PyObject *__pyx_t_8 = NULL;
16995  int __pyx_t_9;
16996  PyObject *(*__pyx_t_10)(PyObject *);
16997  PyObject *__pyx_t_11 = NULL;
16998  long __pyx_t_12;
16999  Py_ssize_t __pyx_t_13;
17000  PyObject *__pyx_t_14 = NULL;
17001  PyObject *__pyx_t_15 = NULL;
17002  PyObject *__pyx_t_16 = NULL;
17003  int __pyx_t_17;
17004  PyObject *__pyx_t_18 = NULL;
17005  PyObject *__pyx_t_19 = NULL;
17006  Py_ssize_t __pyx_t_20;
17007  int __pyx_lineno = 0;
17008  const char *__pyx_filename = NULL;
17009  int __pyx_clineno = 0;
17010  __Pyx_RefNannySetupContext("__init__", 0);
17011 
17012  /* "WaveTools.pyx":775
17013  *
17014  * # Setting the depth
17015  * self.depth = depth # <<<<<<<<<<<<<<
17016  * self.rec_direct = rec_direct
17017  * # Number of wave components
17018  */
17019  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_depth, __pyx_v_depth) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 775; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17020 
17021  /* "WaveTools.pyx":776
17022  * # Setting the depth
17023  * self.depth = depth
17024  * self.rec_direct = rec_direct # <<<<<<<<<<<<<<
17025  * # Number of wave components
17026  * self.N = N
17027  */
17028  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_rec_direct, __pyx_v_rec_direct) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 776; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17029 
17030  /* "WaveTools.pyx":778
17031  * self.rec_direct = rec_direct
17032  * # Number of wave components
17033  * self.N = N # <<<<<<<<<<<<<<
17034  * self.Nwaves = None
17035  * # Position of timeSeriesFile
17036  */
17037  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_v_N) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17038 
17039  /* "WaveTools.pyx":779
17040  * # Number of wave components
17041  * self.N = N
17042  * self.Nwaves = None # <<<<<<<<<<<<<<
17043  * # Position of timeSeriesFile
17044  * if(len(timeSeriesPosition)==3):
17045  */
17046  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves, Py_None) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17047 
17048  /* "WaveTools.pyx":781
17049  * self.Nwaves = None
17050  * # Position of timeSeriesFile
17051  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
17052  * self.x0 = timeSeriesPosition[0]
17053  * self.y0 = timeSeriesPosition[1]
17054  */
17055  __pyx_t_1 = PyObject_Length(__pyx_v_timeSeriesPosition); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 781; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17056  __pyx_t_2 = ((__pyx_t_1 == 3) != 0);
17057  if (__pyx_t_2) {
17058 
17059  /* "WaveTools.pyx":782
17060  * # Position of timeSeriesFile
17061  * if(len(timeSeriesPosition)==3):
17062  * self.x0 = timeSeriesPosition[0] # <<<<<<<<<<<<<<
17063  * self.y0 = timeSeriesPosition[1]
17064  * self.z0 = timeSeriesPosition[2]
17065  */
17066  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17067  __Pyx_GOTREF(__pyx_t_3);
17068  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_x0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 782; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17069  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17070 
17071  /* "WaveTools.pyx":783
17072  * if(len(timeSeriesPosition)==3):
17073  * self.x0 = timeSeriesPosition[0]
17074  * self.y0 = timeSeriesPosition[1] # <<<<<<<<<<<<<<
17075  * self.z0 = timeSeriesPosition[2]
17076  * else:
17077  */
17078  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17079  __Pyx_GOTREF(__pyx_t_3);
17080  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_y0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17081  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17082 
17083  /* "WaveTools.pyx":784
17084  * self.x0 = timeSeriesPosition[0]
17085  * self.y0 = timeSeriesPosition[1]
17086  * self.z0 = timeSeriesPosition[2] # <<<<<<<<<<<<<<
17087  * else:
17088  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
17089  */
17090  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_timeSeriesPosition, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17091  __Pyx_GOTREF(__pyx_t_3);
17092  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_z0, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17093  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17094 
17095  /* "WaveTools.pyx":781
17096  * self.Nwaves = None
17097  * # Position of timeSeriesFile
17098  * if(len(timeSeriesPosition)==3): # <<<<<<<<<<<<<<
17099  * self.x0 = timeSeriesPosition[0]
17100  * self.y0 = timeSeriesPosition[1]
17101  */
17102  goto __pyx_L3;
17103  }
17104 
17105  /* "WaveTools.pyx":786
17106  * self.z0 = timeSeriesPosition[2]
17107  * else:
17108  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
17109  * sys.exit(1)
17110  *
17111  */
17112  /*else*/ {
17113  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17114  __Pyx_GOTREF(__pyx_t_3);
17115  __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17116  __Pyx_GOTREF(__pyx_t_4);
17117  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17118  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__78, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17119  __Pyx_GOTREF(__pyx_t_5);
17120  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17121  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17122  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17123 
17124  /* "WaveTools.pyx":787
17125  * else:
17126  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
17127  * sys.exit(1) # <<<<<<<<<<<<<<
17128  *
17129  *
17130  */
17131  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17132  __Pyx_GOTREF(__pyx_t_5);
17133  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17134  __Pyx_GOTREF(__pyx_t_4);
17135  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17136  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__79, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17137  __Pyx_GOTREF(__pyx_t_5);
17138  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17139  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17140  }
17141  __pyx_L3:;
17142 
17143  /* "WaveTools.pyx":791
17144  *
17145  * # Mean water level
17146  * self.mwl = mwl # <<<<<<<<<<<<<<
17147  * # Wave direction
17148  * self.waveDir = setDirVector(waveDir)
17149  */
17150  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_mwl, __pyx_v_mwl) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 791; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17151 
17152  /* "WaveTools.pyx":793
17153  * self.mwl = mwl
17154  * # Wave direction
17155  * self.waveDir = setDirVector(waveDir) # <<<<<<<<<<<<<<
17156  * # Gravity
17157  * self.g = np.array(g)
17158  */
17159  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_setDirVector); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17160  __Pyx_GOTREF(__pyx_t_4);
17161  __pyx_t_3 = NULL;
17162  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
17163  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
17164  if (likely(__pyx_t_3)) {
17165  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
17166  __Pyx_INCREF(__pyx_t_3);
17167  __Pyx_INCREF(function);
17168  __Pyx_DECREF_SET(__pyx_t_4, function);
17169  }
17170  }
17171  if (!__pyx_t_3) {
17172  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_waveDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17173  __Pyx_GOTREF(__pyx_t_5);
17174  } else {
17175  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17176  __Pyx_GOTREF(__pyx_t_6);
17177  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
17178  __Pyx_INCREF(__pyx_v_waveDir);
17179  __Pyx_GIVEREF(__pyx_v_waveDir);
17180  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_v_waveDir);
17181  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17182  __Pyx_GOTREF(__pyx_t_5);
17183  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17184  }
17185  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17186  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_waveDir, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17187  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17188 
17189  /* "WaveTools.pyx":795
17190  * self.waveDir = setDirVector(waveDir)
17191  * # Gravity
17192  * self.g = np.array(g) # <<<<<<<<<<<<<<
17193  * # Derived variables
17194  * # Gravity magnitude
17195  */
17196  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17197  __Pyx_GOTREF(__pyx_t_4);
17198  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17199  __Pyx_GOTREF(__pyx_t_6);
17200  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17201  __pyx_t_4 = NULL;
17202  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17203  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17204  if (likely(__pyx_t_4)) {
17205  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17206  __Pyx_INCREF(__pyx_t_4);
17207  __Pyx_INCREF(function);
17208  __Pyx_DECREF_SET(__pyx_t_6, function);
17209  }
17210  }
17211  if (!__pyx_t_4) {
17212  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17213  __Pyx_GOTREF(__pyx_t_5);
17214  } else {
17215  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17216  __Pyx_GOTREF(__pyx_t_3);
17217  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
17218  __Pyx_INCREF(__pyx_v_g);
17219  __Pyx_GIVEREF(__pyx_v_g);
17220  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_g);
17221  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17222  __Pyx_GOTREF(__pyx_t_5);
17223  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17224  }
17225  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17226  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_g, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 795; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17227  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17228 
17229  /* "WaveTools.pyx":798
17230  * # Derived variables
17231  * # Gravity magnitude
17232  * self.gAbs = sqrt(sum(g * g)) # <<<<<<<<<<<<<<
17233  * # Definition of gravity direction
17234  * self.vDir = setVertDir(g)
17235  */
17236  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sqrt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17237  __Pyx_GOTREF(__pyx_t_6);
17238  __pyx_t_3 = PyNumber_Multiply(__pyx_v_g, __pyx_v_g); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17239  __Pyx_GOTREF(__pyx_t_3);
17240  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17241  __Pyx_GOTREF(__pyx_t_4);
17242  __Pyx_GIVEREF(__pyx_t_3);
17243  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
17244  __pyx_t_3 = 0;
17245  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17246  __Pyx_GOTREF(__pyx_t_3);
17247  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17248  __pyx_t_4 = NULL;
17249  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17250  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17251  if (likely(__pyx_t_4)) {
17252  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17253  __Pyx_INCREF(__pyx_t_4);
17254  __Pyx_INCREF(function);
17255  __Pyx_DECREF_SET(__pyx_t_6, function);
17256  }
17257  }
17258  if (!__pyx_t_4) {
17259  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17260  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17261  __Pyx_GOTREF(__pyx_t_5);
17262  } else {
17263  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17264  __Pyx_GOTREF(__pyx_t_7);
17265  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
17266  __Pyx_GIVEREF(__pyx_t_3);
17267  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_3);
17268  __pyx_t_3 = 0;
17269  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17270  __Pyx_GOTREF(__pyx_t_5);
17271  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17272  }
17273  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17274  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_gAbs, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17275  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17276 
17277  /* "WaveTools.pyx":800
17278  * self.gAbs = sqrt(sum(g * g))
17279  * # Definition of gravity direction
17280  * self.vDir = setVertDir(g) # <<<<<<<<<<<<<<
17281  * dirCheck(self.waveDir,self.vDir)
17282  * #Reading time series
17283  */
17284  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_setVertDir); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17285  __Pyx_GOTREF(__pyx_t_6);
17286  __pyx_t_7 = NULL;
17287  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17288  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
17289  if (likely(__pyx_t_7)) {
17290  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17291  __Pyx_INCREF(__pyx_t_7);
17292  __Pyx_INCREF(function);
17293  __Pyx_DECREF_SET(__pyx_t_6, function);
17294  }
17295  }
17296  if (!__pyx_t_7) {
17297  __pyx_t_5 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_g); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17298  __Pyx_GOTREF(__pyx_t_5);
17299  } else {
17300  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17301  __Pyx_GOTREF(__pyx_t_3);
17302  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7); __pyx_t_7 = NULL;
17303  __Pyx_INCREF(__pyx_v_g);
17304  __Pyx_GIVEREF(__pyx_v_g);
17305  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_v_g);
17306  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17307  __Pyx_GOTREF(__pyx_t_5);
17308  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17309  }
17310  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17311  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_vDir, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 800; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17312  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17313 
17314  /* "WaveTools.pyx":801
17315  * # Definition of gravity direction
17316  * self.vDir = setVertDir(g)
17317  * dirCheck(self.waveDir,self.vDir) # <<<<<<<<<<<<<<
17318  * #Reading time series
17319  * filetype = timeSeriesFile[-4:]
17320  */
17321  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_dirCheck); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17322  __Pyx_GOTREF(__pyx_t_6);
17323  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17324  __Pyx_GOTREF(__pyx_t_3);
17325  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17326  __Pyx_GOTREF(__pyx_t_7);
17327  __pyx_t_4 = NULL;
17328  __pyx_t_1 = 0;
17329  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17330  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
17331  if (likely(__pyx_t_4)) {
17332  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17333  __Pyx_INCREF(__pyx_t_4);
17334  __Pyx_INCREF(function);
17335  __Pyx_DECREF_SET(__pyx_t_6, function);
17336  __pyx_t_1 = 1;
17337  }
17338  }
17339  __pyx_t_8 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17340  __Pyx_GOTREF(__pyx_t_8);
17341  if (__pyx_t_4) {
17342  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_4); __pyx_t_4 = NULL;
17343  }
17344  __Pyx_GIVEREF(__pyx_t_3);
17345  PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_1, __pyx_t_3);
17346  __Pyx_GIVEREF(__pyx_t_7);
17347  PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_1, __pyx_t_7);
17348  __pyx_t_3 = 0;
17349  __pyx_t_7 = 0;
17350  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17351  __Pyx_GOTREF(__pyx_t_5);
17352  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17353  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17354  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17355 
17356  /* "WaveTools.pyx":803
17357  * dirCheck(self.waveDir,self.vDir)
17358  * #Reading time series
17359  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
17360  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17361  * fid = open(timeSeriesFile,"r")
17362  */
17363  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_v_timeSeriesFile, -4L, 0, NULL, NULL, &__pyx_slice__80, 1, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17364  __Pyx_GOTREF(__pyx_t_5);
17365  __pyx_v_filetype = __pyx_t_5;
17366  __pyx_t_5 = 0;
17367 
17368  /* "WaveTools.pyx":804
17369  * #Reading time series
17370  * filetype = timeSeriesFile[-4:]
17371  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17372  * fid = open(timeSeriesFile,"r")
17373  * if (filetype !=".txt") and (filetype != ".csv"):
17374  */
17375  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17376  __Pyx_GOTREF(__pyx_t_5);
17377  __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17378  __Pyx_GOTREF(__pyx_t_6);
17379  __Pyx_INCREF(__pyx_v_filetype);
17380  __Pyx_GIVEREF(__pyx_v_filetype);
17381  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_v_filetype);
17382  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17383  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17384  PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_timeSeriesFile);
17385  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Reading_timeseries, __pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17386  __Pyx_GOTREF(__pyx_t_8);
17387  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17388  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17389  __Pyx_GOTREF(__pyx_t_6);
17390  __Pyx_GIVEREF(__pyx_t_8);
17391  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_8);
17392  __pyx_t_8 = 0;
17393  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17394  __Pyx_GOTREF(__pyx_t_8);
17395  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17396  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 804; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17397  __Pyx_GOTREF(__pyx_t_7);
17398  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17399  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17400  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17401  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17402 
17403  /* "WaveTools.pyx":805
17404  * filetype = timeSeriesFile[-4:]
17405  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17406  * fid = open(timeSeriesFile,"r") # <<<<<<<<<<<<<<
17407  * if (filetype !=".txt") and (filetype != ".csv"):
17408  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17409  */
17410  __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17411  __Pyx_GOTREF(__pyx_t_7);
17412  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17413  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17414  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_timeSeriesFile);
17415  __Pyx_INCREF(__pyx_n_s_r);
17416  __Pyx_GIVEREF(__pyx_n_s_r);
17417  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_n_s_r);
17418  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_open, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17419  __Pyx_GOTREF(__pyx_t_8);
17420  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17421  __pyx_v_fid = __pyx_t_8;
17422  __pyx_t_8 = 0;
17423 
17424  /* "WaveTools.pyx":806
17425  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17426  * fid = open(timeSeriesFile,"r")
17427  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
17428  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17429  * sys.exit(1)
17430  */
17431  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_txt, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17432  if (__pyx_t_9) {
17433  } else {
17434  __pyx_t_2 = __pyx_t_9;
17435  goto __pyx_L5_bool_binop_done;
17436  }
17437  __pyx_t_9 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_NE)); if (unlikely(__pyx_t_9 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17438  __pyx_t_2 = __pyx_t_9;
17439  __pyx_L5_bool_binop_done:;
17440  if (__pyx_t_2) {
17441 
17442  /* "WaveTools.pyx":807
17443  * fid = open(timeSeriesFile,"r")
17444  * if (filetype !=".txt") and (filetype != ".csv"):
17445  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17446  * sys.exit(1)
17447  * elif (filetype == ".csv"):
17448  */
17449  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17450  __Pyx_GOTREF(__pyx_t_8);
17451  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_File_s_must_be_give, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17452  __Pyx_GOTREF(__pyx_t_7);
17453  __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17454  __Pyx_GOTREF(__pyx_t_6);
17455  __Pyx_GIVEREF(__pyx_t_7);
17456  PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_7);
17457  __pyx_t_7 = 0;
17458  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17459  __Pyx_GOTREF(__pyx_t_7);
17460  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17461  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 807; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17462  __Pyx_GOTREF(__pyx_t_5);
17463  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17464  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17465  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17466  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17467 
17468  /* "WaveTools.pyx":808
17469  * if (filetype !=".txt") and (filetype != ".csv"):
17470  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17471  * sys.exit(1) # <<<<<<<<<<<<<<
17472  * elif (filetype == ".csv"):
17473  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17474  */
17475  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17476  __Pyx_GOTREF(__pyx_t_5);
17477  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_exit); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17478  __Pyx_GOTREF(__pyx_t_7);
17479  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17480  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__81, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17481  __Pyx_GOTREF(__pyx_t_5);
17482  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17483  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17484 
17485  /* "WaveTools.pyx":806
17486  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
17487  * fid = open(timeSeriesFile,"r")
17488  * if (filetype !=".txt") and (filetype != ".csv"): # <<<<<<<<<<<<<<
17489  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17490  * sys.exit(1)
17491  */
17492  goto __pyx_L4;
17493  }
17494 
17495  /* "WaveTools.pyx":809
17496  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17497  * sys.exit(1)
17498  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
17499  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17500  * else:
17501  */
17502  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_v_filetype, __pyx_kp_s_csv, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 809; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17503  if (__pyx_t_2) {
17504 
17505  /* "WaveTools.pyx":810
17506  * sys.exit(1)
17507  * elif (filetype == ".csv"):
17508  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",") # <<<<<<<<<<<<<<
17509  * else:
17510  * tdata = np.loadtxt(fid,skiprows=skiprows)
17511  */
17512  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17513  __Pyx_GOTREF(__pyx_t_5);
17514  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17515  __Pyx_GOTREF(__pyx_t_7);
17516  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17517  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17518  __Pyx_GOTREF(__pyx_t_5);
17519  __Pyx_INCREF(__pyx_v_fid);
17520  __Pyx_GIVEREF(__pyx_v_fid);
17521  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_fid);
17522  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17523  __Pyx_GOTREF(__pyx_t_6);
17524  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17525  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_delimiter, __pyx_kp_s__82) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17526  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17527  __Pyx_GOTREF(__pyx_t_8);
17528  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17529  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17530  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17531  __pyx_v_tdata = __pyx_t_8;
17532  __pyx_t_8 = 0;
17533 
17534  /* "WaveTools.pyx":809
17535  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
17536  * sys.exit(1)
17537  * elif (filetype == ".csv"): # <<<<<<<<<<<<<<
17538  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17539  * else:
17540  */
17541  goto __pyx_L4;
17542  }
17543 
17544  /* "WaveTools.pyx":812
17545  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
17546  * else:
17547  * tdata = np.loadtxt(fid,skiprows=skiprows) # <<<<<<<<<<<<<<
17548  * fid.close()
17549  * #Checks for tseries file
17550  */
17551  /*else*/ {
17552  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17553  __Pyx_GOTREF(__pyx_t_8);
17554  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_loadtxt); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17555  __Pyx_GOTREF(__pyx_t_6);
17556  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17557  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17558  __Pyx_GOTREF(__pyx_t_8);
17559  __Pyx_INCREF(__pyx_v_fid);
17560  __Pyx_GIVEREF(__pyx_v_fid);
17561  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_fid);
17562  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17563  __Pyx_GOTREF(__pyx_t_5);
17564  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_skiprows, __pyx_v_skiprows) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17565  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 812; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17566  __Pyx_GOTREF(__pyx_t_7);
17567  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17568  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17569  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17570  __pyx_v_tdata = __pyx_t_7;
17571  __pyx_t_7 = 0;
17572  }
17573  __pyx_L4:;
17574 
17575  /* "WaveTools.pyx":813
17576  * else:
17577  * tdata = np.loadtxt(fid,skiprows=skiprows)
17578  * fid.close() # <<<<<<<<<<<<<<
17579  * #Checks for tseries file
17580  * # Only 2 columns: time & eta
17581  */
17582  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_fid, __pyx_n_s_close); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17583  __Pyx_GOTREF(__pyx_t_5);
17584  __pyx_t_8 = NULL;
17585  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_5))) {
17586  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_5);
17587  if (likely(__pyx_t_8)) {
17588  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
17589  __Pyx_INCREF(__pyx_t_8);
17590  __Pyx_INCREF(function);
17591  __Pyx_DECREF_SET(__pyx_t_5, function);
17592  }
17593  }
17594  if (__pyx_t_8) {
17595  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17596  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17597  } else {
17598  __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_5); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 813; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17599  }
17600  __Pyx_GOTREF(__pyx_t_7);
17601  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17602  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17603 
17604  /* "WaveTools.pyx":816
17605  * #Checks for tseries file
17606  * # Only 2 columns: time & eta
17607  * ncols = len(tdata[0,:]) # <<<<<<<<<<<<<<
17608  * if ncols != 2:
17609  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17610  */
17611  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
17612  __pyx_t_7 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__84); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17613  __Pyx_GOTREF(__pyx_t_7);
17614  __pyx_t_1 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17615  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17616  __pyx_v_ncols = __pyx_t_1;
17617 
17618  /* "WaveTools.pyx":817
17619  * # Only 2 columns: time & eta
17620  * ncols = len(tdata[0,:])
17621  * if ncols != 2: # <<<<<<<<<<<<<<
17622  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17623  * sys.exit(1)
17624  */
17625  __pyx_t_2 = ((__pyx_v_ncols != 2) != 0);
17626  if (__pyx_t_2) {
17627 
17628  /* "WaveTools.pyx":818
17629  * ncols = len(tdata[0,:])
17630  * if ncols != 2:
17631  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0) # <<<<<<<<<<<<<<
17632  * sys.exit(1)
17633  * time_temp = tdata[:,0]
17634  */
17635  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17636  __Pyx_GOTREF(__pyx_t_7);
17637  __pyx_t_5 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Timeseries_file_s_m, __pyx_v_timeSeriesFile); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17638  __Pyx_GOTREF(__pyx_t_5);
17639  __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17640  __Pyx_GOTREF(__pyx_t_8);
17641  __Pyx_GIVEREF(__pyx_t_5);
17642  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
17643  __pyx_t_5 = 0;
17644  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17645  __Pyx_GOTREF(__pyx_t_5);
17646  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17647  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17648  __Pyx_GOTREF(__pyx_t_6);
17649  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17650  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17651  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17652  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17653 
17654  /* "WaveTools.pyx":819
17655  * if ncols != 2:
17656  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17657  * sys.exit(1) # <<<<<<<<<<<<<<
17658  * time_temp = tdata[:,0]
17659  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
17660  */
17661  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17662  __Pyx_GOTREF(__pyx_t_6);
17663  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_exit); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17664  __Pyx_GOTREF(__pyx_t_5);
17665  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17666  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__85, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17667  __Pyx_GOTREF(__pyx_t_6);
17668  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17669  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17670 
17671  /* "WaveTools.pyx":817
17672  * # Only 2 columns: time & eta
17673  * ncols = len(tdata[0,:])
17674  * if ncols != 2: # <<<<<<<<<<<<<<
17675  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17676  * sys.exit(1)
17677  */
17678  }
17679 
17680  /* "WaveTools.pyx":820
17681  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
17682  * sys.exit(1)
17683  * time_temp = tdata[:,0] # <<<<<<<<<<<<<<
17684  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
17685  *
17686  */
17687  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
17688  __pyx_t_6 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__87); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17689  __Pyx_GOTREF(__pyx_t_6);
17690  __pyx_v_time_temp = __pyx_t_6;
17691  __pyx_t_6 = 0;
17692 
17693  /* "WaveTools.pyx":821
17694  * sys.exit(1)
17695  * time_temp = tdata[:,0]
17696  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1) # <<<<<<<<<<<<<<
17697  *
17698  *
17699  */
17700  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17701  __Pyx_GOTREF(__pyx_t_6);
17702  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17703  __Pyx_GOTREF(__pyx_t_5);
17704  __pyx_t_8 = PyNumber_Subtract(__pyx_t_6, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17705  __Pyx_GOTREF(__pyx_t_8);
17706  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17707  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17708  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17709  __pyx_t_5 = PyInt_FromSsize_t((__pyx_t_1 - 1)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17710  __Pyx_GOTREF(__pyx_t_5);
17711  __pyx_t_6 = __Pyx_PyNumber_Divide(__pyx_t_8, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17712  __Pyx_GOTREF(__pyx_t_6);
17713  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17714  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17715  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_dt, __pyx_t_6) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 821; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17716  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17717 
17718  /* "WaveTools.pyx":826
17719  *
17720  * # If necessary, perform interpolation
17721  * doInterp = False # <<<<<<<<<<<<<<
17722  * for i in range(1,len(time_temp)):
17723  * dt_temp = time_temp[i]-time_temp[i-1]
17724  */
17725  __pyx_v_doInterp = 0;
17726 
17727  /* "WaveTools.pyx":827
17728  * # If necessary, perform interpolation
17729  * doInterp = False
17730  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
17731  * dt_temp = time_temp[i]-time_temp[i-1]
17732  * #check if time is at first column
17733  */
17734  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17735  __pyx_t_6 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17736  __Pyx_GOTREF(__pyx_t_6);
17737  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17738  __Pyx_GOTREF(__pyx_t_5);
17739  __Pyx_INCREF(__pyx_int_1);
17740  __Pyx_GIVEREF(__pyx_int_1);
17741  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_int_1);
17742  __Pyx_GIVEREF(__pyx_t_6);
17743  PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_6);
17744  __pyx_t_6 = 0;
17745  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_5, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17746  __Pyx_GOTREF(__pyx_t_6);
17747  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17748  if (likely(PyList_CheckExact(__pyx_t_6)) || PyTuple_CheckExact(__pyx_t_6)) {
17749  __pyx_t_5 = __pyx_t_6; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
17750  __pyx_t_10 = NULL;
17751  } else {
17752  __pyx_t_1 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17753  __Pyx_GOTREF(__pyx_t_5);
17754  __pyx_t_10 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17755  }
17756  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17757  for (;;) {
17758  if (likely(!__pyx_t_10)) {
17759  if (likely(PyList_CheckExact(__pyx_t_5))) {
17760  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_5)) break;
17761  #if CYTHON_COMPILING_IN_CPYTHON
17762  __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17763  #else
17764  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17765  __Pyx_GOTREF(__pyx_t_6);
17766  #endif
17767  } else {
17768  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
17769  #if CYTHON_COMPILING_IN_CPYTHON
17770  __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_6); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17771  #else
17772  __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17773  __Pyx_GOTREF(__pyx_t_6);
17774  #endif
17775  }
17776  } else {
17777  __pyx_t_6 = __pyx_t_10(__pyx_t_5);
17778  if (unlikely(!__pyx_t_6)) {
17779  PyObject* exc_type = PyErr_Occurred();
17780  if (exc_type) {
17781  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
17782  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 827; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17783  }
17784  break;
17785  }
17786  __Pyx_GOTREF(__pyx_t_6);
17787  }
17788  __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_6);
17789  __pyx_t_6 = 0;
17790 
17791  /* "WaveTools.pyx":828
17792  * doInterp = False
17793  * for i in range(1,len(time_temp)):
17794  * dt_temp = time_temp[i]-time_temp[i-1] # <<<<<<<<<<<<<<
17795  * #check if time is at first column
17796  * if time_temp[i]<=time_temp[i-1]:
17797  */
17798  __pyx_t_6 = PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17799  __Pyx_GOTREF(__pyx_t_6);
17800  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17801  __Pyx_GOTREF(__pyx_t_8);
17802  __pyx_t_7 = PyObject_GetItem(__pyx_v_time_temp, __pyx_t_8); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17803  __Pyx_GOTREF(__pyx_t_7);
17804  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17805  __pyx_t_8 = PyNumber_Subtract(__pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17806  __Pyx_GOTREF(__pyx_t_8);
17807  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17808  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17809  __Pyx_XDECREF_SET(__pyx_v_dt_temp, __pyx_t_8);
17810  __pyx_t_8 = 0;
17811 
17812  /* "WaveTools.pyx":830
17813  * dt_temp = time_temp[i]-time_temp[i-1]
17814  * #check if time is at first column
17815  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
17816  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17817  * sys.exit(1)
17818  */
17819  __pyx_t_8 = PyObject_GetItem(__pyx_v_time_temp, __pyx_v_i); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17820  __Pyx_GOTREF(__pyx_t_8);
17821  __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17822  __Pyx_GOTREF(__pyx_t_7);
17823  __pyx_t_6 = PyObject_GetItem(__pyx_v_time_temp, __pyx_t_7); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17824  __Pyx_GOTREF(__pyx_t_6);
17825  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17826  __pyx_t_7 = PyObject_RichCompare(__pyx_t_8, __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_7); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17827  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17828  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17829  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 830; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17830  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17831  if (__pyx_t_2) {
17832 
17833  /* "WaveTools.pyx":831
17834  * #check if time is at first column
17835  * if time_temp[i]<=time_temp[i-1]:
17836  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) ) # <<<<<<<<<<<<<<
17837  * sys.exit(1)
17838  * #check if sampling rate is constant
17839  */
17840  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17841  __Pyx_GOTREF(__pyx_t_6);
17842  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_v_i, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17843  __Pyx_GOTREF(__pyx_t_8);
17844  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17845  __Pyx_GOTREF(__pyx_t_3);
17846  __Pyx_GIVEREF(__pyx_t_8);
17847  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_8);
17848  __Pyx_INCREF(__pyx_v_i);
17849  __Pyx_GIVEREF(__pyx_v_i);
17850  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_i);
17851  __Pyx_INCREF(__pyx_v_timeSeriesFile);
17852  __Pyx_GIVEREF(__pyx_v_timeSeriesFile);
17853  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_timeSeriesFile);
17854  __pyx_t_8 = 0;
17855  __pyx_t_8 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Found_not_consisten, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17856  __Pyx_GOTREF(__pyx_t_8);
17857  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
17858  __pyx_t_3 = NULL;
17859  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
17860  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_6);
17861  if (likely(__pyx_t_3)) {
17862  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
17863  __Pyx_INCREF(__pyx_t_3);
17864  __Pyx_INCREF(function);
17865  __Pyx_DECREF_SET(__pyx_t_6, function);
17866  }
17867  }
17868  if (!__pyx_t_3) {
17869  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17870  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
17871  __Pyx_GOTREF(__pyx_t_7);
17872  } else {
17873  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17874  __Pyx_GOTREF(__pyx_t_4);
17875  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
17876  __Pyx_GIVEREF(__pyx_t_8);
17877  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_8);
17878  __pyx_t_8 = 0;
17879  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 831; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17880  __Pyx_GOTREF(__pyx_t_7);
17881  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
17882  }
17883  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17884  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17885 
17886  /* "WaveTools.pyx":832
17887  * if time_temp[i]<=time_temp[i-1]:
17888  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17889  * sys.exit(1) # <<<<<<<<<<<<<<
17890  * #check if sampling rate is constant
17891  * if dt_temp!=self.dt:
17892  */
17893  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17894  __Pyx_GOTREF(__pyx_t_7);
17895  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_exit); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17896  __Pyx_GOTREF(__pyx_t_6);
17897  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17898  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__88, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17899  __Pyx_GOTREF(__pyx_t_7);
17900  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17901  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17902 
17903  /* "WaveTools.pyx":830
17904  * dt_temp = time_temp[i]-time_temp[i-1]
17905  * #check if time is at first column
17906  * if time_temp[i]<=time_temp[i-1]: # <<<<<<<<<<<<<<
17907  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
17908  * sys.exit(1)
17909  */
17910  }
17911 
17912  /* "WaveTools.pyx":834
17913  * sys.exit(1)
17914  * #check if sampling rate is constant
17915  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
17916  * doInterp = True
17917  * if(doInterp):
17918  */
17919  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17920  __Pyx_GOTREF(__pyx_t_7);
17921  __pyx_t_6 = PyObject_RichCompare(__pyx_v_dt_temp, __pyx_t_7, Py_NE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17922  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17923  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17924  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17925  if (__pyx_t_2) {
17926 
17927  /* "WaveTools.pyx":835
17928  * #check if sampling rate is constant
17929  * if dt_temp!=self.dt:
17930  * doInterp = True # <<<<<<<<<<<<<<
17931  * if(doInterp):
17932  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
17933  */
17934  __pyx_v_doInterp = 1;
17935 
17936  /* "WaveTools.pyx":834
17937  * sys.exit(1)
17938  * #check if sampling rate is constant
17939  * if dt_temp!=self.dt: # <<<<<<<<<<<<<<
17940  * doInterp = True
17941  * if(doInterp):
17942  */
17943  }
17944 
17945  /* "WaveTools.pyx":827
17946  * # If necessary, perform interpolation
17947  * doInterp = False
17948  * for i in range(1,len(time_temp)): # <<<<<<<<<<<<<<
17949  * dt_temp = time_temp[i]-time_temp[i-1]
17950  * #check if time is at first column
17951  */
17952  }
17953  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17954 
17955  /* "WaveTools.pyx":836
17956  * if dt_temp!=self.dt:
17957  * doInterp = True
17958  * if(doInterp): # <<<<<<<<<<<<<<
17959  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
17960  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
17961  */
17962  __pyx_t_2 = (__pyx_v_doInterp != 0);
17963  if (__pyx_t_2) {
17964 
17965  /* "WaveTools.pyx":837
17966  * doInterp = True
17967  * if(doInterp):
17968  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
17969  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
17970  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
17971  */
17972  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17973  __Pyx_GOTREF(__pyx_t_5);
17974  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17975  __Pyx_GOTREF(__pyx_t_6);
17976  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_level, __pyx_int_0) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17977  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__89, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17978  __Pyx_GOTREF(__pyx_t_7);
17979  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
17980  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17981  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
17982 
17983  /* "WaveTools.pyx":838
17984  * if(doInterp):
17985  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
17986  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp)) # <<<<<<<<<<<<<<
17987  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
17988  * else:
17989  */
17990  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17991  __Pyx_GOTREF(__pyx_t_6);
17992  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_linspace); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
17993  __Pyx_GOTREF(__pyx_t_5);
17994  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
17995  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_time_temp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17996  __Pyx_GOTREF(__pyx_t_6);
17997  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_time_temp, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
17998  __Pyx_GOTREF(__pyx_t_4);
17999  __pyx_t_1 = PyObject_Length(__pyx_v_time_temp); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18000  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18001  __Pyx_GOTREF(__pyx_t_8);
18002  __pyx_t_3 = NULL;
18003  __pyx_t_1 = 0;
18004  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
18005  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
18006  if (likely(__pyx_t_3)) {
18007  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
18008  __Pyx_INCREF(__pyx_t_3);
18009  __Pyx_INCREF(function);
18010  __Pyx_DECREF_SET(__pyx_t_5, function);
18011  __pyx_t_1 = 1;
18012  }
18013  }
18014  __pyx_t_11 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18015  __Pyx_GOTREF(__pyx_t_11);
18016  if (__pyx_t_3) {
18017  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3); __pyx_t_3 = NULL;
18018  }
18019  __Pyx_GIVEREF(__pyx_t_6);
18020  PyTuple_SET_ITEM(__pyx_t_11, 0+__pyx_t_1, __pyx_t_6);
18021  __Pyx_GIVEREF(__pyx_t_4);
18022  PyTuple_SET_ITEM(__pyx_t_11, 1+__pyx_t_1, __pyx_t_4);
18023  __Pyx_GIVEREF(__pyx_t_8);
18024  PyTuple_SET_ITEM(__pyx_t_11, 2+__pyx_t_1, __pyx_t_8);
18025  __pyx_t_6 = 0;
18026  __pyx_t_4 = 0;
18027  __pyx_t_8 = 0;
18028  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_11, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18029  __Pyx_GOTREF(__pyx_t_7);
18030  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18031  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18032  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_time, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18033  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18034 
18035  /* "WaveTools.pyx":839
18036  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18037  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18038  * self.eta = np.interp(self.time,time_temp,tdata[:,1]) # <<<<<<<<<<<<<<
18039  * else:
18040  * self.time = time_temp
18041  */
18042  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18043  __Pyx_GOTREF(__pyx_t_5);
18044  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_interp); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18045  __Pyx_GOTREF(__pyx_t_11);
18046  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
18047  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18048  __Pyx_GOTREF(__pyx_t_5);
18049  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18050  __pyx_t_8 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__91); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18051  __Pyx_GOTREF(__pyx_t_8);
18052  __pyx_t_4 = NULL;
18053  __pyx_t_1 = 0;
18054  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
18055  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
18056  if (likely(__pyx_t_4)) {
18057  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
18058  __Pyx_INCREF(__pyx_t_4);
18059  __Pyx_INCREF(function);
18060  __Pyx_DECREF_SET(__pyx_t_11, function);
18061  __pyx_t_1 = 1;
18062  }
18063  }
18064  __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18065  __Pyx_GOTREF(__pyx_t_6);
18066  if (__pyx_t_4) {
18067  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
18068  }
18069  __Pyx_GIVEREF(__pyx_t_5);
18070  PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_1, __pyx_t_5);
18071  __Pyx_INCREF(__pyx_v_time_temp);
18072  __Pyx_GIVEREF(__pyx_v_time_temp);
18073  PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_time_temp);
18074  __Pyx_GIVEREF(__pyx_t_8);
18075  PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_1, __pyx_t_8);
18076  __pyx_t_5 = 0;
18077  __pyx_t_8 = 0;
18078  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18079  __Pyx_GOTREF(__pyx_t_7);
18080  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18081  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18082  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18083  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18084 
18085  /* "WaveTools.pyx":836
18086  * if dt_temp!=self.dt:
18087  * doInterp = True
18088  * if(doInterp): # <<<<<<<<<<<<<<
18089  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
18090  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
18091  */
18092  goto __pyx_L12;
18093  }
18094 
18095  /* "WaveTools.pyx":841
18096  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
18097  * else:
18098  * self.time = time_temp # <<<<<<<<<<<<<<
18099  * self.eta = tdata[:,1]
18100  *
18101  */
18102  /*else*/ {
18103  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_time, __pyx_v_time_temp) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 841; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18104 
18105  /* "WaveTools.pyx":842
18106  * else:
18107  * self.time = time_temp
18108  * self.eta = tdata[:,1] # <<<<<<<<<<<<<<
18109  *
18110  * self.t0 = self.time[0]
18111  */
18112  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18113  __pyx_t_7 = PyObject_GetItem(__pyx_v_tdata, __pyx_tuple__93); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18114  __Pyx_GOTREF(__pyx_t_7);
18115  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18116  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18117  }
18118  __pyx_L12:;
18119 
18120  /* "WaveTools.pyx":844
18121  * self.eta = tdata[:,1]
18122  *
18123  * self.t0 = self.time[0] # <<<<<<<<<<<<<<
18124  * # Remove mean level from raw data
18125  * self.eta -= np.mean(self.eta)
18126  */
18127  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18128  __Pyx_GOTREF(__pyx_t_7);
18129  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18130  __Pyx_GOTREF(__pyx_t_11);
18131  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18132  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_t0, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18133  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18134 
18135  /* "WaveTools.pyx":846
18136  * self.t0 = self.time[0]
18137  * # Remove mean level from raw data
18138  * self.eta -= np.mean(self.eta) # <<<<<<<<<<<<<<
18139  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
18140  * self.eta *= costap(len(self.time),cutoff=0.025)
18141  */
18142  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18143  __Pyx_GOTREF(__pyx_t_11);
18144  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18145  __Pyx_GOTREF(__pyx_t_6);
18146  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_mean); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18147  __Pyx_GOTREF(__pyx_t_8);
18148  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18149  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18150  __Pyx_GOTREF(__pyx_t_6);
18151  __pyx_t_5 = NULL;
18152  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
18153  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
18154  if (likely(__pyx_t_5)) {
18155  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
18156  __Pyx_INCREF(__pyx_t_5);
18157  __Pyx_INCREF(function);
18158  __Pyx_DECREF_SET(__pyx_t_8, function);
18159  }
18160  }
18161  if (!__pyx_t_5) {
18162  __pyx_t_7 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18163  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18164  __Pyx_GOTREF(__pyx_t_7);
18165  } else {
18166  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18167  __Pyx_GOTREF(__pyx_t_4);
18168  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_5); __pyx_t_5 = NULL;
18169  __Pyx_GIVEREF(__pyx_t_6);
18170  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
18171  __pyx_t_6 = 0;
18172  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18173  __Pyx_GOTREF(__pyx_t_7);
18174  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18175  }
18176  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18177  __pyx_t_8 = PyNumber_InPlaceSubtract(__pyx_t_11, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18178  __Pyx_GOTREF(__pyx_t_8);
18179  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18180  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18181  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 846; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18182  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18183 
18184  /* "WaveTools.pyx":848
18185  * self.eta -= np.mean(self.eta)
18186  * # Filter out first 2.5 % and last 2.5% to make the signal periodic
18187  * self.eta *= costap(len(self.time),cutoff=0.025) # <<<<<<<<<<<<<<
18188  * # clear tdata from memory
18189  * del tdata
18190  */
18191  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18192  __Pyx_GOTREF(__pyx_t_8);
18193  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_costap); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18194  __Pyx_GOTREF(__pyx_t_7);
18195  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18196  __Pyx_GOTREF(__pyx_t_11);
18197  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18198  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18199  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18200  __Pyx_GOTREF(__pyx_t_11);
18201  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18202  __Pyx_GOTREF(__pyx_t_4);
18203  __Pyx_GIVEREF(__pyx_t_11);
18204  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11);
18205  __pyx_t_11 = 0;
18206  __pyx_t_11 = PyDict_New(); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18207  __Pyx_GOTREF(__pyx_t_11);
18208  if (PyDict_SetItem(__pyx_t_11, __pyx_n_s_cutoff, __pyx_float_0_025) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18209  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, __pyx_t_11); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18210  __Pyx_GOTREF(__pyx_t_6);
18211  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18212  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18213  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18214  __pyx_t_11 = PyNumber_InPlaceMultiply(__pyx_t_8, __pyx_t_6); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18215  __Pyx_GOTREF(__pyx_t_11);
18216  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18217  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18218  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_eta, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18219  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18220 
18221  /* "WaveTools.pyx":850
18222  * self.eta *= costap(len(self.time),cutoff=0.025)
18223  * # clear tdata from memory
18224  * del tdata # <<<<<<<<<<<<<<
18225  * # Calculate time lenght
18226  * self.tlength = (self.time[-1]-self.time[0])
18227  */
18228  if (unlikely(!__pyx_v_tdata)) { __Pyx_RaiseUnboundLocalError("tdata"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 850; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
18229  __Pyx_DECREF(__pyx_v_tdata);
18230  __pyx_v_tdata = NULL;
18231 
18232  /* "WaveTools.pyx":852
18233  * del tdata
18234  * # Calculate time lenght
18235  * self.tlength = (self.time[-1]-self.time[0]) # <<<<<<<<<<<<<<
18236  * # Matrix initialisation
18237  * self.windows_handover = []
18238  */
18239  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18240  __Pyx_GOTREF(__pyx_t_11);
18241  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_11, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18242  __Pyx_GOTREF(__pyx_t_6);
18243  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18244  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18245  __Pyx_GOTREF(__pyx_t_11);
18246  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18247  __Pyx_GOTREF(__pyx_t_8);
18248  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18249  __pyx_t_11 = PyNumber_Subtract(__pyx_t_6, __pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18250  __Pyx_GOTREF(__pyx_t_11);
18251  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
18252  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18253  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_tlength, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18254  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18255 
18256  /* "WaveTools.pyx":854
18257  * self.tlength = (self.time[-1]-self.time[0])
18258  * # Matrix initialisation
18259  * self.windows_handover = [] # <<<<<<<<<<<<<<
18260  * self.windows_rec = []
18261  *
18262  */
18263  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18264  __Pyx_GOTREF(__pyx_t_11);
18265  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18266  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18267 
18268  /* "WaveTools.pyx":855
18269  * # Matrix initialisation
18270  * self.windows_handover = []
18271  * self.windows_rec = [] # <<<<<<<<<<<<<<
18272  *
18273  *
18274  */
18275  __pyx_t_11 = PyList_New(0); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18276  __Pyx_GOTREF(__pyx_t_11);
18277  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 855; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18278  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18279 
18280  /* "WaveTools.pyx":862
18281  *
18282  * # Direct decomposition of the time series for using at reconstruct_direct
18283  * if (self.rec_direct): # <<<<<<<<<<<<<<
18284  * Nf = self.N
18285  * self.nfft=len(self.time)
18286  */
18287  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_rec_direct); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18288  __Pyx_GOTREF(__pyx_t_11);
18289  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 862; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18290  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18291  if (__pyx_t_2) {
18292 
18293  /* "WaveTools.pyx":863
18294  * # Direct decomposition of the time series for using at reconstruct_direct
18295  * if (self.rec_direct):
18296  * Nf = self.N # <<<<<<<<<<<<<<
18297  * self.nfft=len(self.time)
18298  * logEvent("WaveTools.py: performing a direct series decomposition")
18299  */
18300  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18301  __Pyx_GOTREF(__pyx_t_11);
18302  __pyx_v_Nf = __pyx_t_11;
18303  __pyx_t_11 = 0;
18304 
18305  /* "WaveTools.pyx":864
18306  * if (self.rec_direct):
18307  * Nf = self.N
18308  * self.nfft=len(self.time) # <<<<<<<<<<<<<<
18309  * logEvent("WaveTools.py: performing a direct series decomposition")
18310  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18311  */
18312  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18313  __Pyx_GOTREF(__pyx_t_11);
18314  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18315  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18316  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18317  __Pyx_GOTREF(__pyx_t_11);
18318  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_nfft, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 864; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18319  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18320 
18321  /* "WaveTools.pyx":865
18322  * Nf = self.N
18323  * self.nfft=len(self.time)
18324  * logEvent("WaveTools.py: performing a direct series decomposition") # <<<<<<<<<<<<<<
18325  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18326  * self.ai = self.decomp[1]
18327  */
18328  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18329  __Pyx_GOTREF(__pyx_t_11);
18330  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__94, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18331  __Pyx_GOTREF(__pyx_t_8);
18332  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18333  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18334 
18335  /* "WaveTools.pyx":866
18336  * self.nfft=len(self.time)
18337  * logEvent("WaveTools.py: performing a direct series decomposition")
18338  * self.decomp = decompose_tseries(self.time,self.eta,self.dt) # <<<<<<<<<<<<<<
18339  * self.ai = self.decomp[1]
18340  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18341  */
18342  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18343  __Pyx_GOTREF(__pyx_t_11);
18344  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18345  __Pyx_GOTREF(__pyx_t_6);
18346  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18347  __Pyx_GOTREF(__pyx_t_4);
18348  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18349  __Pyx_GOTREF(__pyx_t_7);
18350  __pyx_t_5 = NULL;
18351  __pyx_t_1 = 0;
18352  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
18353  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
18354  if (likely(__pyx_t_5)) {
18355  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
18356  __Pyx_INCREF(__pyx_t_5);
18357  __Pyx_INCREF(function);
18358  __Pyx_DECREF_SET(__pyx_t_11, function);
18359  __pyx_t_1 = 1;
18360  }
18361  }
18362  __pyx_t_3 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18363  __Pyx_GOTREF(__pyx_t_3);
18364  if (__pyx_t_5) {
18365  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_5); __pyx_t_5 = NULL;
18366  }
18367  __Pyx_GIVEREF(__pyx_t_6);
18368  PyTuple_SET_ITEM(__pyx_t_3, 0+__pyx_t_1, __pyx_t_6);
18369  __Pyx_GIVEREF(__pyx_t_4);
18370  PyTuple_SET_ITEM(__pyx_t_3, 1+__pyx_t_1, __pyx_t_4);
18371  __Pyx_GIVEREF(__pyx_t_7);
18372  PyTuple_SET_ITEM(__pyx_t_3, 2+__pyx_t_1, __pyx_t_7);
18373  __pyx_t_6 = 0;
18374  __pyx_t_4 = 0;
18375  __pyx_t_7 = 0;
18376  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18377  __Pyx_GOTREF(__pyx_t_8);
18378  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18379  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18380  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decomp, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 866; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18381  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18382 
18383  /* "WaveTools.pyx":867
18384  * logEvent("WaveTools.py: performing a direct series decomposition")
18385  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18386  * self.ai = self.decomp[1] # <<<<<<<<<<<<<<
18387  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18388  * imax = min(ipeak + Nf/2,len(self.ai))
18389  */
18390  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18391  __Pyx_GOTREF(__pyx_t_8);
18392  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18393  __Pyx_GOTREF(__pyx_t_11);
18394  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18395  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18396  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18397 
18398  /* "WaveTools.pyx":868
18399  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
18400  * self.ai = self.decomp[1]
18401  * ipeak = np.where(self.ai == max(self.ai))[0][0] # <<<<<<<<<<<<<<
18402  * imax = min(ipeak + Nf/2,len(self.ai))
18403  * imin = max(0,ipeak - Nf/2)
18404  */
18405  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18406  __Pyx_GOTREF(__pyx_t_8);
18407  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18408  __Pyx_GOTREF(__pyx_t_3);
18409  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18410  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18411  __Pyx_GOTREF(__pyx_t_8);
18412  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18413  __Pyx_GOTREF(__pyx_t_7);
18414  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18415  __Pyx_GOTREF(__pyx_t_4);
18416  __Pyx_GIVEREF(__pyx_t_7);
18417  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7);
18418  __pyx_t_7 = 0;
18419  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18420  __Pyx_GOTREF(__pyx_t_7);
18421  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18422  __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_t_7, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18423  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18424  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18425  __pyx_t_7 = NULL;
18426  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
18427  __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_3);
18428  if (likely(__pyx_t_7)) {
18429  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
18430  __Pyx_INCREF(__pyx_t_7);
18431  __Pyx_INCREF(function);
18432  __Pyx_DECREF_SET(__pyx_t_3, function);
18433  }
18434  }
18435  if (!__pyx_t_7) {
18436  __pyx_t_11 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18437  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18438  __Pyx_GOTREF(__pyx_t_11);
18439  } else {
18440  __pyx_t_8 = PyTuple_New(1+1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18441  __Pyx_GOTREF(__pyx_t_8);
18442  __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_7); __pyx_t_7 = NULL;
18443  __Pyx_GIVEREF(__pyx_t_4);
18444  PyTuple_SET_ITEM(__pyx_t_8, 0+1, __pyx_t_4);
18445  __pyx_t_4 = 0;
18446  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18447  __Pyx_GOTREF(__pyx_t_11);
18448  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18449  }
18450  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18451  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18452  __Pyx_GOTREF(__pyx_t_3);
18453  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18454  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18455  __Pyx_GOTREF(__pyx_t_11);
18456  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18457  __pyx_v_ipeak = __pyx_t_11;
18458  __pyx_t_11 = 0;
18459 
18460  /* "WaveTools.pyx":869
18461  * self.ai = self.decomp[1]
18462  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18463  * imax = min(ipeak + Nf/2,len(self.ai)) # <<<<<<<<<<<<<<
18464  * imin = max(0,ipeak - Nf/2)
18465  * self.ai = self.ai[imin:imax]
18466  */
18467  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18468  __Pyx_GOTREF(__pyx_t_11);
18469  __pyx_t_1 = PyObject_Length(__pyx_t_11); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18470  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18471  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_v_Nf, __pyx_int_2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18472  __Pyx_GOTREF(__pyx_t_11);
18473  __pyx_t_3 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_11); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18474  __Pyx_GOTREF(__pyx_t_3);
18475  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18476  __pyx_t_8 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18477  __Pyx_GOTREF(__pyx_t_8);
18478  __pyx_t_4 = PyObject_RichCompare(__pyx_t_8, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18479  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18480  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18481  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18482  if (__pyx_t_2) {
18483  __pyx_t_4 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 869; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18484  __Pyx_GOTREF(__pyx_t_4);
18485  __pyx_t_11 = __pyx_t_4;
18486  __pyx_t_4 = 0;
18487  } else {
18488  __Pyx_INCREF(__pyx_t_3);
18489  __pyx_t_11 = __pyx_t_3;
18490  }
18491  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18492  __pyx_t_3 = __pyx_t_11;
18493  __Pyx_INCREF(__pyx_t_3);
18494  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18495  __pyx_v_imax = __pyx_t_3;
18496  __pyx_t_3 = 0;
18497 
18498  /* "WaveTools.pyx":870
18499  * ipeak = np.where(self.ai == max(self.ai))[0][0]
18500  * imax = min(ipeak + Nf/2,len(self.ai))
18501  * imin = max(0,ipeak - Nf/2) # <<<<<<<<<<<<<<
18502  * self.ai = self.ai[imin:imax]
18503  * self.omega = self.decomp[0][imin:imax]
18504  */
18505  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_v_Nf, __pyx_int_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18506  __Pyx_GOTREF(__pyx_t_3);
18507  __pyx_t_11 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18508  __Pyx_GOTREF(__pyx_t_11);
18509  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18510  __pyx_t_12 = 0;
18511  __pyx_t_4 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18512  __Pyx_GOTREF(__pyx_t_4);
18513  __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18514  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18515  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18516  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18517  if (__pyx_t_2) {
18518  __Pyx_INCREF(__pyx_t_11);
18519  __pyx_t_3 = __pyx_t_11;
18520  } else {
18521  __pyx_t_8 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 870; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18522  __Pyx_GOTREF(__pyx_t_8);
18523  __pyx_t_3 = __pyx_t_8;
18524  __pyx_t_8 = 0;
18525  }
18526  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18527  __pyx_t_11 = __pyx_t_3;
18528  __Pyx_INCREF(__pyx_t_11);
18529  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18530  __pyx_v_imin = __pyx_t_11;
18531  __pyx_t_11 = 0;
18532 
18533  /* "WaveTools.pyx":871
18534  * imax = min(ipeak + Nf/2,len(self.ai))
18535  * imin = max(0,ipeak - Nf/2)
18536  * self.ai = self.ai[imin:imax] # <<<<<<<<<<<<<<
18537  * self.omega = self.decomp[0][imin:imax]
18538  * self.phi = - self.decomp[2][imin:imax]
18539  */
18540  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18541  __Pyx_GOTREF(__pyx_t_11);
18542  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18543  __Pyx_GOTREF(__pyx_t_3);
18544  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18545  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ai, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18546  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18547 
18548  /* "WaveTools.pyx":872
18549  * imin = max(0,ipeak - Nf/2)
18550  * self.ai = self.ai[imin:imax]
18551  * self.omega = self.decomp[0][imin:imax] # <<<<<<<<<<<<<<
18552  * self.phi = - self.decomp[2][imin:imax]
18553  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18554  */
18555  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18556  __Pyx_GOTREF(__pyx_t_3);
18557  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18558  __Pyx_GOTREF(__pyx_t_11);
18559  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18560  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18561  __Pyx_GOTREF(__pyx_t_3);
18562  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18563  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_omega, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18564  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18565 
18566  /* "WaveTools.pyx":873
18567  * self.ai = self.ai[imin:imax]
18568  * self.omega = self.decomp[0][imin:imax]
18569  * self.phi = - self.decomp[2][imin:imax] # <<<<<<<<<<<<<<
18570  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18571  * self.Nf = imax - imin
18572  */
18573  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18574  __Pyx_GOTREF(__pyx_t_3);
18575  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_3, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18576  __Pyx_GOTREF(__pyx_t_11);
18577  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18578  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18579  __Pyx_GOTREF(__pyx_t_3);
18580  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18581  __pyx_t_11 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18582  __Pyx_GOTREF(__pyx_t_11);
18583  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18584  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_phi, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 873; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18585  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18586 
18587  /* "WaveTools.pyx":874
18588  * self.omega = self.decomp[0][imin:imax]
18589  * self.phi = - self.decomp[2][imin:imax]
18590  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
18591  * self.Nf = imax - imin
18592  * self.setup = self.decomp[3]
18593  */
18594  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18595  __Pyx_GOTREF(__pyx_t_11);
18596  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18597  __Pyx_GOTREF(__pyx_t_3);
18598  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18599  __Pyx_GOTREF(__pyx_t_8);
18600  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18601  __Pyx_GOTREF(__pyx_t_4);
18602  __Pyx_GIVEREF(__pyx_t_3);
18603  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
18604  __Pyx_GIVEREF(__pyx_t_8);
18605  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_8);
18606  __pyx_t_3 = 0;
18607  __pyx_t_8 = 0;
18608  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18609  __Pyx_GOTREF(__pyx_t_8);
18610  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18611  __Pyx_GOTREF(__pyx_t_3);
18612  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18613  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18614  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18615  __Pyx_GOTREF(__pyx_t_3);
18616  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18617  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18618  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18619  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_ki, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 874; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18620  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18621 
18622  /* "WaveTools.pyx":875
18623  * self.phi = - self.decomp[2][imin:imax]
18624  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18625  * self.Nf = imax - imin # <<<<<<<<<<<<<<
18626  * self.setup = self.decomp[3]
18627  * self.kDir = np.zeros((len(self.ki),3),"d")
18628  */
18629  __pyx_t_3 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18630  __Pyx_GOTREF(__pyx_t_3);
18631  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 875; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18632  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18633 
18634  /* "WaveTools.pyx":876
18635  * self.ki = dispersion(self.omega,self.depth,g=self.gAbs)
18636  * self.Nf = imax - imin
18637  * self.setup = self.decomp[3] # <<<<<<<<<<<<<<
18638  * self.kDir = np.zeros((len(self.ki),3),"d")
18639  * for ii in range(len(self.ki)):
18640  */
18641  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decomp); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18642  __Pyx_GOTREF(__pyx_t_3);
18643  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_3, 3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18644  __Pyx_GOTREF(__pyx_t_8);
18645  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18646  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_setup, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18647  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18648 
18649  /* "WaveTools.pyx":877
18650  * self.Nf = imax - imin
18651  * self.setup = self.decomp[3]
18652  * self.kDir = np.zeros((len(self.ki),3),"d") # <<<<<<<<<<<<<<
18653  * for ii in range(len(self.ki)):
18654  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
18655  */
18656  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18657  __Pyx_GOTREF(__pyx_t_3);
18658  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18659  __Pyx_GOTREF(__pyx_t_4);
18660  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18661  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18662  __Pyx_GOTREF(__pyx_t_3);
18663  __pyx_t_1 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18664  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18665  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18666  __Pyx_GOTREF(__pyx_t_3);
18667  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18668  __Pyx_GOTREF(__pyx_t_11);
18669  __Pyx_GIVEREF(__pyx_t_3);
18670  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
18671  __Pyx_INCREF(__pyx_int_3);
18672  __Pyx_GIVEREF(__pyx_int_3);
18673  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_int_3);
18674  __pyx_t_3 = 0;
18675  __pyx_t_3 = NULL;
18676  __pyx_t_1 = 0;
18677  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_4))) {
18678  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
18679  if (likely(__pyx_t_3)) {
18680  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
18681  __Pyx_INCREF(__pyx_t_3);
18682  __Pyx_INCREF(function);
18683  __Pyx_DECREF_SET(__pyx_t_4, function);
18684  __pyx_t_1 = 1;
18685  }
18686  }
18687  __pyx_t_7 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18688  __Pyx_GOTREF(__pyx_t_7);
18689  if (__pyx_t_3) {
18690  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
18691  }
18692  __Pyx_GIVEREF(__pyx_t_11);
18693  PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_1, __pyx_t_11);
18694  __Pyx_INCREF(__pyx_n_s_d);
18695  __Pyx_GIVEREF(__pyx_n_s_d);
18696  PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_1, __pyx_n_s_d);
18697  __pyx_t_11 = 0;
18698  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18699  __Pyx_GOTREF(__pyx_t_8);
18700  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18701  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18702  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_kDir, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18703  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18704 
18705  /* "WaveTools.pyx":878
18706  * self.setup = self.decomp[3]
18707  * self.kDir = np.zeros((len(self.ki),3),"d")
18708  * for ii in range(len(self.ki)): # <<<<<<<<<<<<<<
18709  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:]
18710  *
18711  */
18712  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18713  __Pyx_GOTREF(__pyx_t_8);
18714  __pyx_t_1 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 878; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18715  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18716  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_1; __pyx_t_13+=1) {
18717  __pyx_v_ii = __pyx_t_13;
18718 
18719  /* "WaveTools.pyx":879
18720  * self.kDir = np.zeros((len(self.ki),3),"d")
18721  * for ii in range(len(self.ki)):
18722  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
18723  *
18724  *
18725  */
18726  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18727  __Pyx_GOTREF(__pyx_t_8);
18728  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_8, __pyx_v_ii, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
18729  __Pyx_GOTREF(__pyx_t_4);
18730  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18731  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18732  __Pyx_GOTREF(__pyx_t_8);
18733  __pyx_t_7 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, NULL, NULL, &__pyx_slice__95, 0, 0, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18734  __Pyx_GOTREF(__pyx_t_7);
18735  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18736  __pyx_t_8 = PyNumber_Multiply(__pyx_t_4, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18737  __Pyx_GOTREF(__pyx_t_8);
18738  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18739  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18740  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18741  __Pyx_GOTREF(__pyx_t_7);
18742  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18743  __Pyx_GOTREF(__pyx_t_4);
18744  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18745  __Pyx_GOTREF(__pyx_t_11);
18746  __Pyx_GIVEREF(__pyx_t_4);
18747  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4);
18748  __Pyx_INCREF(__pyx_slice__96);
18749  __Pyx_GIVEREF(__pyx_slice__96);
18750  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_slice__96);
18751  __pyx_t_4 = 0;
18752  if (unlikely(PyObject_SetItem(__pyx_t_7, __pyx_t_11, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18753  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18754  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18755  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18756  }
18757 
18758  /* "WaveTools.pyx":862
18759  *
18760  * # Direct decomposition of the time series for using at reconstruct_direct
18761  * if (self.rec_direct): # <<<<<<<<<<<<<<
18762  * Nf = self.N
18763  * self.nfft=len(self.time)
18764  */
18765  goto __pyx_L13;
18766  }
18767 
18768  /* "WaveTools.pyx":884
18769  * # Spectral windowing
18770  * else:
18771  * if (window_params==None): # <<<<<<<<<<<<<<
18772  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18773  * sys.exit(1)
18774  */
18775  /*else*/ {
18776  __pyx_t_8 = PyObject_RichCompare(__pyx_v_window_params, Py_None, Py_EQ); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18777  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 884; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18778  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18779  if (__pyx_t_2) {
18780 
18781  /* "WaveTools.pyx":885
18782  * else:
18783  * if (window_params==None):
18784  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary") # <<<<<<<<<<<<<<
18785  * sys.exit(1)
18786  * try:
18787  */
18788  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18789  __Pyx_GOTREF(__pyx_t_8);
18790  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__97, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18791  __Pyx_GOTREF(__pyx_t_11);
18792  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18793  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18794 
18795  /* "WaveTools.pyx":886
18796  * if (window_params==None):
18797  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18798  * sys.exit(1) # <<<<<<<<<<<<<<
18799  * try:
18800  * self.Nwaves = window_params["Nwaves"]
18801  */
18802  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18803  __Pyx_GOTREF(__pyx_t_11);
18804  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18805  __Pyx_GOTREF(__pyx_t_8);
18806  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18807  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__98, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
18808  __Pyx_GOTREF(__pyx_t_11);
18809  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18810  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18811 
18812  /* "WaveTools.pyx":884
18813  * # Spectral windowing
18814  * else:
18815  * if (window_params==None): # <<<<<<<<<<<<<<
18816  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18817  * sys.exit(1)
18818  */
18819  }
18820 
18821  /* "WaveTools.pyx":887
18822  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18823  * sys.exit(1)
18824  * try: # <<<<<<<<<<<<<<
18825  * self.Nwaves = window_params["Nwaves"]
18826  * except:
18827  */
18828  {
18829  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
18830  __Pyx_XGOTREF(__pyx_t_14);
18831  __Pyx_XGOTREF(__pyx_t_15);
18832  __Pyx_XGOTREF(__pyx_t_16);
18833  /*try:*/ {
18834 
18835  /* "WaveTools.pyx":888
18836  * sys.exit(1)
18837  * try:
18838  * self.Nwaves = window_params["Nwaves"] # <<<<<<<<<<<<<<
18839  * except:
18840  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18841  */
18842  __pyx_t_11 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Nwaves); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L17_error;};
18843  __Pyx_GOTREF(__pyx_t_11);
18844  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 888; __pyx_clineno = __LINE__; goto __pyx_L17_error;}
18845  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18846 
18847  /* "WaveTools.pyx":887
18848  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18849  * sys.exit(1)
18850  * try: # <<<<<<<<<<<<<<
18851  * self.Nwaves = window_params["Nwaves"]
18852  * except:
18853  */
18854  }
18855  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
18856  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
18857  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
18858  goto __pyx_L24_try_end;
18859  __pyx_L17_error:;
18860  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18861  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
18862  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18863  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
18864  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
18865  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
18866  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
18867 
18868  /* "WaveTools.pyx":889
18869  * try:
18870  * self.Nwaves = window_params["Nwaves"]
18871  * except: # <<<<<<<<<<<<<<
18872  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18873  * sys.exit(1)
18874  */
18875  /*except:*/ {
18876  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18877  if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 889; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18878  __Pyx_GOTREF(__pyx_t_11);
18879  __Pyx_GOTREF(__pyx_t_8);
18880  __Pyx_GOTREF(__pyx_t_7);
18881 
18882  /* "WaveTools.pyx":890
18883  * self.Nwaves = window_params["Nwaves"]
18884  * except:
18885  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary") # <<<<<<<<<<<<<<
18886  * sys.exit(1)
18887  *
18888  */
18889  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18890  __Pyx_GOTREF(__pyx_t_4);
18891  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__99, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18892  __Pyx_GOTREF(__pyx_t_3);
18893  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18894  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18895 
18896  /* "WaveTools.pyx":891
18897  * except:
18898  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
18899  * sys.exit(1) # <<<<<<<<<<<<<<
18900  *
18901  * try:
18902  */
18903  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18904  __Pyx_GOTREF(__pyx_t_3);
18905  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18906  __Pyx_GOTREF(__pyx_t_4);
18907  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18908  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__100, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L19_except_error;}
18909  __Pyx_GOTREF(__pyx_t_3);
18910  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
18911  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
18912  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
18913  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
18914  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18915  goto __pyx_L18_exception_handled;
18916  }
18917  __pyx_L19_except_error:;
18918 
18919  /* "WaveTools.pyx":887
18920  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
18921  * sys.exit(1)
18922  * try: # <<<<<<<<<<<<<<
18923  * self.Nwaves = window_params["Nwaves"]
18924  * except:
18925  */
18926  __Pyx_XGIVEREF(__pyx_t_14);
18927  __Pyx_XGIVEREF(__pyx_t_15);
18928  __Pyx_XGIVEREF(__pyx_t_16);
18929  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
18930  goto __pyx_L1_error;
18931  __pyx_L18_exception_handled:;
18932  __Pyx_XGIVEREF(__pyx_t_14);
18933  __Pyx_XGIVEREF(__pyx_t_15);
18934  __Pyx_XGIVEREF(__pyx_t_16);
18935  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
18936  __pyx_L24_try_end:;
18937  }
18938 
18939  /* "WaveTools.pyx":893
18940  * sys.exit(1)
18941  *
18942  * try: # <<<<<<<<<<<<<<
18943  * self.Tm = window_params["Tm"]
18944  * except:
18945  */
18946  {
18947  __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
18948  __Pyx_XGOTREF(__pyx_t_16);
18949  __Pyx_XGOTREF(__pyx_t_15);
18950  __Pyx_XGOTREF(__pyx_t_14);
18951  /*try:*/ {
18952 
18953  /* "WaveTools.pyx":894
18954  *
18955  * try:
18956  * self.Tm = window_params["Tm"] # <<<<<<<<<<<<<<
18957  * except:
18958  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
18959  */
18960  __pyx_t_7 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Tm); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L27_error;};
18961  __Pyx_GOTREF(__pyx_t_7);
18962  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Tm, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 894; __pyx_clineno = __LINE__; goto __pyx_L27_error;}
18963  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
18964 
18965  /* "WaveTools.pyx":893
18966  * sys.exit(1)
18967  *
18968  * try: # <<<<<<<<<<<<<<
18969  * self.Tm = window_params["Tm"]
18970  * except:
18971  */
18972  }
18973  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
18974  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
18975  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
18976  goto __pyx_L34_try_end;
18977  __pyx_L27_error:;
18978  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
18979  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
18980  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
18981  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
18982  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
18983  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
18984  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
18985 
18986  /* "WaveTools.pyx":895
18987  * try:
18988  * self.Tm = window_params["Tm"]
18989  * except: # <<<<<<<<<<<<<<
18990  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
18991  * sys.exit(1)
18992  */
18993  /*except:*/ {
18994  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
18995  if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_8, &__pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
18996  __Pyx_GOTREF(__pyx_t_7);
18997  __Pyx_GOTREF(__pyx_t_8);
18998  __Pyx_GOTREF(__pyx_t_11);
18999 
19000  /* "WaveTools.pyx":896
19001  * self.Tm = window_params["Tm"]
19002  * except:
19003  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary") # <<<<<<<<<<<<<<
19004  * sys.exit(1)
19005  *
19006  */
19007  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19008  __Pyx_GOTREF(__pyx_t_3);
19009  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__101, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19010  __Pyx_GOTREF(__pyx_t_4);
19011  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19012  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19013 
19014  /* "WaveTools.pyx":897
19015  * except:
19016  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
19017  * sys.exit(1) # <<<<<<<<<<<<<<
19018  *
19019  * try:
19020  */
19021  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19022  __Pyx_GOTREF(__pyx_t_4);
19023  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19024  __Pyx_GOTREF(__pyx_t_3);
19025  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19026  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__102, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L29_except_error;}
19027  __Pyx_GOTREF(__pyx_t_4);
19028  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19029  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19030  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19031  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19032  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19033  goto __pyx_L28_exception_handled;
19034  }
19035  __pyx_L29_except_error:;
19036 
19037  /* "WaveTools.pyx":893
19038  * sys.exit(1)
19039  *
19040  * try: # <<<<<<<<<<<<<<
19041  * self.Tm = window_params["Tm"]
19042  * except:
19043  */
19044  __Pyx_XGIVEREF(__pyx_t_16);
19045  __Pyx_XGIVEREF(__pyx_t_15);
19046  __Pyx_XGIVEREF(__pyx_t_14);
19047  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19048  goto __pyx_L1_error;
19049  __pyx_L28_exception_handled:;
19050  __Pyx_XGIVEREF(__pyx_t_16);
19051  __Pyx_XGIVEREF(__pyx_t_15);
19052  __Pyx_XGIVEREF(__pyx_t_14);
19053  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19054  __pyx_L34_try_end:;
19055  }
19056 
19057  /* "WaveTools.pyx":899
19058  * sys.exit(1)
19059  *
19060  * try: # <<<<<<<<<<<<<<
19061  * self.windowName = window_params["Window"]
19062  * except:
19063  */
19064  {
19065  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
19066  __Pyx_XGOTREF(__pyx_t_14);
19067  __Pyx_XGOTREF(__pyx_t_15);
19068  __Pyx_XGOTREF(__pyx_t_16);
19069  /*try:*/ {
19070 
19071  /* "WaveTools.pyx":900
19072  *
19073  * try:
19074  * self.windowName = window_params["Window"] # <<<<<<<<<<<<<<
19075  * except:
19076  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19077  */
19078  __pyx_t_11 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Window); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L37_error;};
19079  __Pyx_GOTREF(__pyx_t_11);
19080  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_windowName, __pyx_t_11) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 900; __pyx_clineno = __LINE__; goto __pyx_L37_error;}
19081  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19082 
19083  /* "WaveTools.pyx":899
19084  * sys.exit(1)
19085  *
19086  * try: # <<<<<<<<<<<<<<
19087  * self.windowName = window_params["Window"]
19088  * except:
19089  */
19090  }
19091  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19092  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19093  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19094  goto __pyx_L44_try_end;
19095  __pyx_L37_error:;
19096  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19097  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19098  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19099  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19100  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19101  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19102  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19103 
19104  /* "WaveTools.pyx":901
19105  * try:
19106  * self.windowName = window_params["Window"]
19107  * except: # <<<<<<<<<<<<<<
19108  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19109  * sys.exit(1)
19110  */
19111  /*except:*/ {
19112  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19113  if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_8, &__pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19114  __Pyx_GOTREF(__pyx_t_11);
19115  __Pyx_GOTREF(__pyx_t_8);
19116  __Pyx_GOTREF(__pyx_t_7);
19117 
19118  /* "WaveTools.pyx":902
19119  * self.windowName = window_params["Window"]
19120  * except:
19121  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary") # <<<<<<<<<<<<<<
19122  * sys.exit(1)
19123  *
19124  */
19125  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19126  __Pyx_GOTREF(__pyx_t_4);
19127  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__103, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19128  __Pyx_GOTREF(__pyx_t_3);
19129  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19130  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19131 
19132  /* "WaveTools.pyx":903
19133  * except:
19134  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
19135  * sys.exit(1) # <<<<<<<<<<<<<<
19136  *
19137  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19138  */
19139  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19140  __Pyx_GOTREF(__pyx_t_3);
19141  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19142  __Pyx_GOTREF(__pyx_t_4);
19143  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19144  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__104, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L39_except_error;}
19145  __Pyx_GOTREF(__pyx_t_3);
19146  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19147  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19148  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19149  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19150  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19151  goto __pyx_L38_exception_handled;
19152  }
19153  __pyx_L39_except_error:;
19154 
19155  /* "WaveTools.pyx":899
19156  * sys.exit(1)
19157  *
19158  * try: # <<<<<<<<<<<<<<
19159  * self.windowName = window_params["Window"]
19160  * except:
19161  */
19162  __Pyx_XGIVEREF(__pyx_t_14);
19163  __Pyx_XGIVEREF(__pyx_t_15);
19164  __Pyx_XGIVEREF(__pyx_t_16);
19165  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19166  goto __pyx_L1_error;
19167  __pyx_L38_exception_handled:;
19168  __Pyx_XGIVEREF(__pyx_t_14);
19169  __Pyx_XGIVEREF(__pyx_t_15);
19170  __Pyx_XGIVEREF(__pyx_t_16);
19171  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19172  __pyx_L44_try_end:;
19173  }
19174 
19175  /* "WaveTools.pyx":905
19176  * sys.exit(1)
19177  *
19178  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
19179  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19180  * sys.exit(1)
19181  */
19182  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19183  __Pyx_GOTREF(__pyx_t_7);
19184  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19185  __Pyx_GOTREF(__pyx_t_8);
19186  __pyx_t_11 = PyNumber_Multiply(__pyx_float_0_5, __pyx_t_8); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19187  __Pyx_GOTREF(__pyx_t_11);
19188  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19189  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19190  __Pyx_GOTREF(__pyx_t_8);
19191  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19192  __Pyx_GOTREF(__pyx_t_3);
19193  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19194  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19195  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19196  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19197  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19198  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19199  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19200  if (__pyx_t_2) {
19201 
19202  /* "WaveTools.pyx":906
19203  *
19204  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19205  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )") # <<<<<<<<<<<<<<
19206  * sys.exit(1)
19207  *
19208  */
19209  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19210  __Pyx_GOTREF(__pyx_t_8);
19211  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__105, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19212  __Pyx_GOTREF(__pyx_t_3);
19213  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19214  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19215 
19216  /* "WaveTools.pyx":907
19217  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
19218  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19219  * sys.exit(1) # <<<<<<<<<<<<<<
19220  *
19221  *
19222  */
19223  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19224  __Pyx_GOTREF(__pyx_t_3);
19225  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19226  __Pyx_GOTREF(__pyx_t_8);
19227  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19228  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__106, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19229  __Pyx_GOTREF(__pyx_t_3);
19230  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19231  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19232 
19233  /* "WaveTools.pyx":905
19234  * sys.exit(1)
19235  *
19236  * if(self.Nwaves > 0.5*self.tlength / self.Tm): # <<<<<<<<<<<<<<
19237  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
19238  * sys.exit(1)
19239  */
19240  }
19241 
19242  /* "WaveTools.pyx":911
19243  *
19244  *
19245  * validWindows = [costap, tophat] # <<<<<<<<<<<<<<
19246  * wind_filt = loadExistingFunction(self.windowName, validWindows)
19247  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19248  */
19249  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_costap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19250  __Pyx_GOTREF(__pyx_t_3);
19251  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_tophat); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19252  __Pyx_GOTREF(__pyx_t_8);
19253  __pyx_t_7 = PyList_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19254  __Pyx_GOTREF(__pyx_t_7);
19255  __Pyx_GIVEREF(__pyx_t_3);
19256  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
19257  __Pyx_GIVEREF(__pyx_t_8);
19258  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_8);
19259  __pyx_t_3 = 0;
19260  __pyx_t_8 = 0;
19261  __pyx_v_validWindows = ((PyObject*)__pyx_t_7);
19262  __pyx_t_7 = 0;
19263 
19264  /* "WaveTools.pyx":912
19265  *
19266  * validWindows = [costap, tophat]
19267  * wind_filt = loadExistingFunction(self.windowName, validWindows) # <<<<<<<<<<<<<<
19268  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19269  * # Portion of overlap, compared to window time
19270  */
19271  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_loadExistingFunction); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19272  __Pyx_GOTREF(__pyx_t_8);
19273  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windowName); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19274  __Pyx_GOTREF(__pyx_t_3);
19275  __pyx_t_11 = NULL;
19276  __pyx_t_1 = 0;
19277  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
19278  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
19279  if (likely(__pyx_t_11)) {
19280  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
19281  __Pyx_INCREF(__pyx_t_11);
19282  __Pyx_INCREF(function);
19283  __Pyx_DECREF_SET(__pyx_t_8, function);
19284  __pyx_t_1 = 1;
19285  }
19286  }
19287  __pyx_t_4 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19288  __Pyx_GOTREF(__pyx_t_4);
19289  if (__pyx_t_11) {
19290  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_11); __pyx_t_11 = NULL;
19291  }
19292  __Pyx_GIVEREF(__pyx_t_3);
19293  PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_1, __pyx_t_3);
19294  __Pyx_INCREF(__pyx_v_validWindows);
19295  __Pyx_GIVEREF(__pyx_v_validWindows);
19296  PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_1, __pyx_v_validWindows);
19297  __pyx_t_3 = 0;
19298  __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_4, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 912; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19299  __Pyx_GOTREF(__pyx_t_7);
19300  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19301  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19302  __pyx_v_wind_filt = __pyx_t_7;
19303  __pyx_t_7 = 0;
19304 
19305  /* "WaveTools.pyx":913
19306  * validWindows = [costap, tophat]
19307  * wind_filt = loadExistingFunction(self.windowName, validWindows)
19308  * logEvent("WaveTools.py: performing series decomposition with spectral windows") # <<<<<<<<<<<<<<
19309  * # Portion of overlap, compared to window time
19310  * try:
19311  */
19312  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19313  __Pyx_GOTREF(__pyx_t_7);
19314  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_tuple__107, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19315  __Pyx_GOTREF(__pyx_t_8);
19316  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19317  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19318 
19319  /* "WaveTools.pyx":915
19320  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19321  * # Portion of overlap, compared to window time
19322  * try: # <<<<<<<<<<<<<<
19323  * self.overlap = window_params["Overlap"]
19324  * except:
19325  */
19326  {
19327  __Pyx_ExceptionSave(&__pyx_t_16, &__pyx_t_15, &__pyx_t_14);
19328  __Pyx_XGOTREF(__pyx_t_16);
19329  __Pyx_XGOTREF(__pyx_t_15);
19330  __Pyx_XGOTREF(__pyx_t_14);
19331  /*try:*/ {
19332 
19333  /* "WaveTools.pyx":916
19334  * # Portion of overlap, compared to window time
19335  * try:
19336  * self.overlap = window_params["Overlap"] # <<<<<<<<<<<<<<
19337  * except:
19338  * self.overlap = 0.25
19339  */
19340  __pyx_t_8 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Overlap); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L48_error;};
19341  __Pyx_GOTREF(__pyx_t_8);
19342  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_overlap, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 916; __pyx_clineno = __LINE__; goto __pyx_L48_error;}
19343  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19344 
19345  /* "WaveTools.pyx":915
19346  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19347  * # Portion of overlap, compared to window time
19348  * try: # <<<<<<<<<<<<<<
19349  * self.overlap = window_params["Overlap"]
19350  * except:
19351  */
19352  }
19353  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19354  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19355  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19356  goto __pyx_L55_try_end;
19357  __pyx_L48_error:;
19358  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19359  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19360  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19361  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19362  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19363  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19364  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19365 
19366  /* "WaveTools.pyx":917
19367  * try:
19368  * self.overlap = window_params["Overlap"]
19369  * except: # <<<<<<<<<<<<<<
19370  * self.overlap = 0.25
19371  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19372  */
19373  /*except:*/ {
19374  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19375  if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19376  __Pyx_GOTREF(__pyx_t_8);
19377  __Pyx_GOTREF(__pyx_t_7);
19378  __Pyx_GOTREF(__pyx_t_4);
19379 
19380  /* "WaveTools.pyx":918
19381  * self.overlap = window_params["Overlap"]
19382  * except:
19383  * self.overlap = 0.25 # <<<<<<<<<<<<<<
19384  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19385  *
19386  */
19387  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_overlap, __pyx_float_0_25) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 918; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19388 
19389  /* "WaveTools.pyx":919
19390  * except:
19391  * self.overlap = 0.25
19392  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)") # <<<<<<<<<<<<<<
19393  *
19394  * try:
19395  */
19396  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19397  __Pyx_GOTREF(__pyx_t_3);
19398  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_tuple__108, NULL); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L50_except_error;}
19399  __Pyx_GOTREF(__pyx_t_11);
19400  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19401  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19402  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19403  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19404  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19405  goto __pyx_L49_exception_handled;
19406  }
19407  __pyx_L50_except_error:;
19408 
19409  /* "WaveTools.pyx":915
19410  * logEvent("WaveTools.py: performing series decomposition with spectral windows")
19411  * # Portion of overlap, compared to window time
19412  * try: # <<<<<<<<<<<<<<
19413  * self.overlap = window_params["Overlap"]
19414  * except:
19415  */
19416  __Pyx_XGIVEREF(__pyx_t_16);
19417  __Pyx_XGIVEREF(__pyx_t_15);
19418  __Pyx_XGIVEREF(__pyx_t_14);
19419  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19420  goto __pyx_L1_error;
19421  __pyx_L49_exception_handled:;
19422  __Pyx_XGIVEREF(__pyx_t_16);
19423  __Pyx_XGIVEREF(__pyx_t_15);
19424  __Pyx_XGIVEREF(__pyx_t_14);
19425  __Pyx_ExceptionReset(__pyx_t_16, __pyx_t_15, __pyx_t_14);
19426  __pyx_L55_try_end:;
19427  }
19428 
19429  /* "WaveTools.pyx":921
19430  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19431  *
19432  * try: # <<<<<<<<<<<<<<
19433  * self.cutoff = window_params["Cutoff"]
19434  * except:
19435  */
19436  {
19437  __Pyx_ExceptionSave(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
19438  __Pyx_XGOTREF(__pyx_t_14);
19439  __Pyx_XGOTREF(__pyx_t_15);
19440  __Pyx_XGOTREF(__pyx_t_16);
19441  /*try:*/ {
19442 
19443  /* "WaveTools.pyx":922
19444  *
19445  * try:
19446  * self.cutoff = window_params["Cutoff"] # <<<<<<<<<<<<<<
19447  * except:
19448  * self.cutoff= 0.1
19449  */
19450  __pyx_t_4 = PyObject_GetItem(__pyx_v_window_params, __pyx_n_s_Cutoff); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L58_error;};
19451  __Pyx_GOTREF(__pyx_t_4);
19452  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 922; __pyx_clineno = __LINE__; goto __pyx_L58_error;}
19453  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19454 
19455  /* "WaveTools.pyx":921
19456  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19457  *
19458  * try: # <<<<<<<<<<<<<<
19459  * self.cutoff = window_params["Cutoff"]
19460  * except:
19461  */
19462  }
19463  __Pyx_XDECREF(__pyx_t_14); __pyx_t_14 = 0;
19464  __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
19465  __Pyx_XDECREF(__pyx_t_16); __pyx_t_16 = 0;
19466  goto __pyx_L65_try_end;
19467  __pyx_L58_error:;
19468  __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
19469  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
19470  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
19471  __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
19472  __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
19473  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
19474  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
19475 
19476  /* "WaveTools.pyx":923
19477  * try:
19478  * self.cutoff = window_params["Cutoff"]
19479  * except: # <<<<<<<<<<<<<<
19480  * self.cutoff= 0.1
19481  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
19482  */
19483  /*except:*/ {
19484  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
19485  if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19486  __Pyx_GOTREF(__pyx_t_4);
19487  __Pyx_GOTREF(__pyx_t_7);
19488  __Pyx_GOTREF(__pyx_t_8);
19489 
19490  /* "WaveTools.pyx":924
19491  * self.cutoff = window_params["Cutoff"]
19492  * except:
19493  * self.cutoff= 0.1 # <<<<<<<<<<<<<<
19494  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)")
19495  *
19496  */
19497  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_cutoff, __pyx_float_0_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 924; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19498 
19499  /* "WaveTools.pyx":925
19500  * except:
19501  * self.cutoff= 0.1
19502  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)") # <<<<<<<<<<<<<<
19503  *
19504  *
19505  */
19506  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19507  __Pyx_GOTREF(__pyx_t_11);
19508  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_tuple__109, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L60_except_error;}
19509  __Pyx_GOTREF(__pyx_t_3);
19510  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19511  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19512  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19513  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19514  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19515  goto __pyx_L59_exception_handled;
19516  }
19517  __pyx_L60_except_error:;
19518 
19519  /* "WaveTools.pyx":921
19520  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)")
19521  *
19522  * try: # <<<<<<<<<<<<<<
19523  * self.cutoff = window_params["Cutoff"]
19524  * except:
19525  */
19526  __Pyx_XGIVEREF(__pyx_t_14);
19527  __Pyx_XGIVEREF(__pyx_t_15);
19528  __Pyx_XGIVEREF(__pyx_t_16);
19529  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19530  goto __pyx_L1_error;
19531  __pyx_L59_exception_handled:;
19532  __Pyx_XGIVEREF(__pyx_t_14);
19533  __Pyx_XGIVEREF(__pyx_t_15);
19534  __Pyx_XGIVEREF(__pyx_t_16);
19535  __Pyx_ExceptionReset(__pyx_t_14, __pyx_t_15, __pyx_t_16);
19536  __pyx_L65_try_end:;
19537  }
19538 
19539  /* "WaveTools.pyx":931
19540  * # Portion of window filtered with the Costap filter
19541  * # Setting the handover time, either at the middle of the overlap or just after the filter
19542  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.) # <<<<<<<<<<<<<<
19543  * if (self.handover > 0.9 * self.overlap):
19544  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19545  */
19546  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19547  __Pyx_GOTREF(__pyx_t_8);
19548  __pyx_t_7 = __Pyx_PyFloat_DivideObjC(__pyx_t_8, __pyx_float_2_, 2., 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19549  __Pyx_GOTREF(__pyx_t_7);
19550  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19551  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19552  __Pyx_GOTREF(__pyx_t_8);
19553  __pyx_t_4 = PyNumber_Multiply(__pyx_float_1_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19554  __Pyx_GOTREF(__pyx_t_4);
19555  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19556  __pyx_t_3 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19557  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19558  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19559  if (__pyx_t_2) {
19560  __Pyx_INCREF(__pyx_t_7);
19561  __pyx_t_8 = __pyx_t_7;
19562  } else {
19563  __Pyx_INCREF(__pyx_t_4);
19564  __pyx_t_8 = __pyx_t_4;
19565  }
19566  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19567  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19568  __pyx_t_7 = __pyx_t_8;
19569  __Pyx_INCREF(__pyx_t_7);
19570  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19571  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_handover, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 931; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19572  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19573 
19574  /* "WaveTools.pyx":932
19575  * # Setting the handover time, either at the middle of the overlap or just after the filter
19576  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19577  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
19578  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19579  * sys.exit(1)
19580  */
19581  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19582  __Pyx_GOTREF(__pyx_t_7);
19583  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19584  __Pyx_GOTREF(__pyx_t_8);
19585  __pyx_t_4 = PyNumber_Multiply(__pyx_float_0_9, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19586  __Pyx_GOTREF(__pyx_t_4);
19587  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19588  __pyx_t_8 = PyObject_RichCompare(__pyx_t_7, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19589  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19590  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19591  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 932; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19592  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19593  if (__pyx_t_2) {
19594 
19595  /* "WaveTools.pyx":933
19596  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19597  * if (self.handover > 0.9 * self.overlap):
19598  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap") # <<<<<<<<<<<<<<
19599  * sys.exit(1)
19600  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19601  */
19602  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19603  __Pyx_GOTREF(__pyx_t_8);
19604  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__110, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19605  __Pyx_GOTREF(__pyx_t_4);
19606  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19607  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19608 
19609  /* "WaveTools.pyx":934
19610  * if (self.handover > 0.9 * self.overlap):
19611  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19612  * sys.exit(1) # <<<<<<<<<<<<<<
19613  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19614  * self.Toverlap = self.overlap * self.Twindow
19615  */
19616  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_sys); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19617  __Pyx_GOTREF(__pyx_t_4);
19618  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_exit); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19619  __Pyx_GOTREF(__pyx_t_8);
19620  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19621  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_tuple__111, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19622  __Pyx_GOTREF(__pyx_t_4);
19623  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19624  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19625 
19626  /* "WaveTools.pyx":932
19627  * # Setting the handover time, either at the middle of the overlap or just after the filter
19628  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
19629  * if (self.handover > 0.9 * self.overlap): # <<<<<<<<<<<<<<
19630  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19631  * sys.exit(1)
19632  */
19633  }
19634 
19635  /* "WaveTools.pyx":935
19636  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
19637  * sys.exit(1)
19638  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves # <<<<<<<<<<<<<<
19639  * self.Toverlap = self.overlap * self.Twindow
19640  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19641  */
19642  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19643  __Pyx_GOTREF(__pyx_t_4);
19644  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwaves); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19645  __Pyx_GOTREF(__pyx_t_8);
19646  __pyx_t_7 = PyNumber_Multiply(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19647  __Pyx_GOTREF(__pyx_t_7);
19648  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19649  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19650  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Twindow, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19651  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19652 
19653  /* "WaveTools.pyx":936
19654  * sys.exit(1)
19655  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19656  * self.Toverlap = self.overlap * self.Twindow # <<<<<<<<<<<<<<
19657  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19658  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19659  */
19660  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19661  __Pyx_GOTREF(__pyx_t_7);
19662  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19663  __Pyx_GOTREF(__pyx_t_8);
19664  __pyx_t_4 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19665  __Pyx_GOTREF(__pyx_t_4);
19666  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19667  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19668  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 936; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19669  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19670 
19671  /* "WaveTools.pyx":937
19672  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
19673  * self.Toverlap = self.overlap * self.Twindow
19674  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time # <<<<<<<<<<<<<<
19675  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19676  * self.Toverlap = self.overlap*self.Twindow
19677  */
19678  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19679  __Pyx_GOTREF(__pyx_t_4);
19680  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19681  __Pyx_GOTREF(__pyx_t_8);
19682  __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19683  __Pyx_GOTREF(__pyx_t_7);
19684  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19685  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19686  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19687  __Pyx_GOTREF(__pyx_t_8);
19688  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19689  __Pyx_GOTREF(__pyx_t_4);
19690  __pyx_t_3 = PyNumber_Subtract(__pyx_t_8, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19691  __Pyx_GOTREF(__pyx_t_3);
19692  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19693  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19694  __pyx_t_4 = __Pyx_PyNumber_Divide(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19695  __Pyx_GOTREF(__pyx_t_4);
19696  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19697  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19698  __pyx_t_3 = PyNumber_Int(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19699  __Pyx_GOTREF(__pyx_t_3);
19700  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19701  __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19702  __Pyx_GOTREF(__pyx_t_4);
19703  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19704  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 937; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19705  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19706 
19707  /* "WaveTools.pyx":938
19708  * self.Toverlap = self.overlap * self.Twindow
19709  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19710  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows # <<<<<<<<<<<<<<
19711  * self.Toverlap = self.overlap*self.Twindow
19712  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19713  */
19714  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19715  __Pyx_GOTREF(__pyx_t_4);
19716  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19717  __Pyx_GOTREF(__pyx_t_3);
19718  __pyx_t_7 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19719  __Pyx_GOTREF(__pyx_t_7);
19720  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19721  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19722  __Pyx_GOTREF(__pyx_t_3);
19723  __pyx_t_8 = __Pyx_PyInt_SubtractObjC(__pyx_t_3, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19724  __Pyx_GOTREF(__pyx_t_8);
19725  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19726  __pyx_t_3 = PyNumber_Multiply(__pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19727  __Pyx_GOTREF(__pyx_t_3);
19728  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19729  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19730  __pyx_t_8 = __Pyx_PyFloat_AddCObj(__pyx_float_1_, __pyx_t_3, 1., 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19731  __Pyx_GOTREF(__pyx_t_8);
19732  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19733  __pyx_t_3 = __Pyx_PyNumber_Divide(__pyx_t_4, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19734  __Pyx_GOTREF(__pyx_t_3);
19735  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19736  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19737  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Twindow, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 938; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19738  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19739 
19740  /* "WaveTools.pyx":939
19741  * self.Nwindows = int( (self.tlength - self.Twindow ) / (self.Twindow - self.Toverlap) ) + 1 #Getting the actual number of windows (N-1) * (Twindow - Toverlap) + Twindow = total time
19742  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19743  * self.Toverlap = self.overlap*self.Twindow # <<<<<<<<<<<<<<
19744  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19745  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19746  */
19747  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19748  __Pyx_GOTREF(__pyx_t_3);
19749  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19750  __Pyx_GOTREF(__pyx_t_8);
19751  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19752  __Pyx_GOTREF(__pyx_t_4);
19753  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19754  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19755  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19756  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19757 
19758  /* "WaveTools.pyx":940
19759  * self.Twindow = self.tlength/(1. + (1. - self.overlap)*(self.Nwindows-1)) # Correct Twindow and Toverlap for duration and integer number of windows
19760  * self.Toverlap = self.overlap*self.Twindow
19761  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) ) # <<<<<<<<<<<<<<
19762  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19763  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19764  */
19765  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19766  __Pyx_GOTREF(__pyx_t_8);
19767  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19768  __Pyx_GOTREF(__pyx_t_3);
19769  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Tm); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19770  __Pyx_GOTREF(__pyx_t_7);
19771  __pyx_t_11 = __Pyx_PyNumber_Divide(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19772  __Pyx_GOTREF(__pyx_t_11);
19773  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19774  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19775  __pyx_t_7 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Correcting_window_d, __pyx_t_11); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19776  __Pyx_GOTREF(__pyx_t_7);
19777  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19778  __pyx_t_11 = NULL;
19779  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
19780  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
19781  if (likely(__pyx_t_11)) {
19782  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
19783  __Pyx_INCREF(__pyx_t_11);
19784  __Pyx_INCREF(function);
19785  __Pyx_DECREF_SET(__pyx_t_8, function);
19786  }
19787  }
19788  if (!__pyx_t_11) {
19789  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19790  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19791  __Pyx_GOTREF(__pyx_t_4);
19792  } else {
19793  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19794  __Pyx_GOTREF(__pyx_t_3);
19795  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_11); __pyx_t_11 = NULL;
19796  __Pyx_GIVEREF(__pyx_t_7);
19797  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_7);
19798  __pyx_t_7 = 0;
19799  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 940; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19800  __Pyx_GOTREF(__pyx_t_4);
19801  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19802  }
19803  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19804  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19805 
19806  /* "WaveTools.pyx":941
19807  * self.Toverlap = self.overlap*self.Twindow
19808  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19809  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength # <<<<<<<<<<<<<<
19810  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19811  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19812  */
19813  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19814  __Pyx_GOTREF(__pyx_t_4);
19815  __pyx_t_8 = __Pyx_PyFloat_SubtractObjC(__pyx_t_4, __pyx_float_1_, 1., 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19816  __Pyx_GOTREF(__pyx_t_8);
19817  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19818  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19819  __Pyx_GOTREF(__pyx_t_4);
19820  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19821  __Pyx_GOTREF(__pyx_t_3);
19822  __pyx_t_7 = PyNumber_Subtract(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19823  __Pyx_GOTREF(__pyx_t_7);
19824  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19825  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19826  __pyx_t_3 = PyNumber_Multiply(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19827  __Pyx_GOTREF(__pyx_t_3);
19828  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19829  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19830  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19831  __Pyx_GOTREF(__pyx_t_7);
19832  __pyx_t_8 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19833  __Pyx_GOTREF(__pyx_t_8);
19834  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19835  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19836  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_tlength); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19837  __Pyx_GOTREF(__pyx_t_7);
19838  __pyx_t_3 = PyNumber_Subtract(__pyx_t_8, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19839  __Pyx_GOTREF(__pyx_t_3);
19840  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19841  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19842  __pyx_v_diff = __pyx_t_3;
19843  __pyx_t_3 = 0;
19844 
19845  /* "WaveTools.pyx":942
19846  * logEvent("WaveTools.py: Correcting window duration for matching the exact time range of the series. Window duration correspond to %s waves approx." %(self.Twindow / self.Tm) )
19847  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19848  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) ) # <<<<<<<<<<<<<<
19849  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19850  * # Setting where each window starts and ends
19851  */
19852  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19853  __Pyx_GOTREF(__pyx_t_7);
19854  __pyx_t_8 = PyNumber_Multiply(__pyx_int_100, __pyx_v_diff); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19855  __Pyx_GOTREF(__pyx_t_8);
19856  __pyx_t_4 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Checking_duration_o, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19857  __Pyx_GOTREF(__pyx_t_4);
19858  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19859  __pyx_t_8 = NULL;
19860  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
19861  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
19862  if (likely(__pyx_t_8)) {
19863  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
19864  __Pyx_INCREF(__pyx_t_8);
19865  __Pyx_INCREF(function);
19866  __Pyx_DECREF_SET(__pyx_t_7, function);
19867  }
19868  }
19869  if (!__pyx_t_8) {
19870  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19871  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19872  __Pyx_GOTREF(__pyx_t_3);
19873  } else {
19874  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19875  __Pyx_GOTREF(__pyx_t_11);
19876  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8); __pyx_t_8 = NULL;
19877  __Pyx_GIVEREF(__pyx_t_4);
19878  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_4);
19879  __pyx_t_4 = 0;
19880  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 942; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19881  __Pyx_GOTREF(__pyx_t_3);
19882  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
19883  }
19884  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19885  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19886 
19887  /* "WaveTools.pyx":943
19888  * diff = (self.Nwindows-1.)*(self.Twindow -self.Toverlap)+self.Twindow - self.tlength
19889  * logEvent("WaveTools.py: Checking duration of windowed time series: %s per cent difference from original duration" %(100*diff) )
19890  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap )) # <<<<<<<<<<<<<<
19891  * # Setting where each window starts and ends
19892  * for jj in range(self.Nwindows):
19893  */
19894  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_logEvent); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19895  __Pyx_GOTREF(__pyx_t_7);
19896  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19897  __Pyx_GOTREF(__pyx_t_11);
19898  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19899  __Pyx_GOTREF(__pyx_t_4);
19900  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_overlap); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19901  __Pyx_GOTREF(__pyx_t_8);
19902  __pyx_t_6 = PyNumber_Multiply(__pyx_int_100, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19903  __Pyx_GOTREF(__pyx_t_6);
19904  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19905  __pyx_t_8 = PyTuple_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19906  __Pyx_GOTREF(__pyx_t_8);
19907  __Pyx_GIVEREF(__pyx_t_11);
19908  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_11);
19909  __Pyx_GIVEREF(__pyx_t_4);
19910  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_t_4);
19911  __Pyx_GIVEREF(__pyx_t_6);
19912  PyTuple_SET_ITEM(__pyx_t_8, 2, __pyx_t_6);
19913  __pyx_t_11 = 0;
19914  __pyx_t_4 = 0;
19915  __pyx_t_6 = 0;
19916  __pyx_t_6 = __Pyx_PyString_Format(__pyx_kp_s_WaveTools_py_Using_s_windows_for, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19917  __Pyx_GOTREF(__pyx_t_6);
19918  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
19919  __pyx_t_8 = NULL;
19920  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
19921  __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_7);
19922  if (likely(__pyx_t_8)) {
19923  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
19924  __Pyx_INCREF(__pyx_t_8);
19925  __Pyx_INCREF(function);
19926  __Pyx_DECREF_SET(__pyx_t_7, function);
19927  }
19928  }
19929  if (!__pyx_t_8) {
19930  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_6); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19931  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
19932  __Pyx_GOTREF(__pyx_t_3);
19933  } else {
19934  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19935  __Pyx_GOTREF(__pyx_t_4);
19936  __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_8); __pyx_t_8 = NULL;
19937  __Pyx_GIVEREF(__pyx_t_6);
19938  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_6);
19939  __pyx_t_6 = 0;
19940  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19941  __Pyx_GOTREF(__pyx_t_3);
19942  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
19943  }
19944  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19945  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19946 
19947  /* "WaveTools.pyx":945
19948  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
19949  * # Setting where each window starts and ends
19950  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
19951  * span = np.zeros(2,"d")
19952  * tfirst = self.time[0] + self.Twindow
19953  */
19954  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19955  __Pyx_GOTREF(__pyx_t_3);
19956  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19957  __Pyx_GOTREF(__pyx_t_7);
19958  __Pyx_GIVEREF(__pyx_t_3);
19959  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
19960  __pyx_t_3 = 0;
19961  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19962  __Pyx_GOTREF(__pyx_t_3);
19963  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
19964  if (likely(PyList_CheckExact(__pyx_t_3)) || PyTuple_CheckExact(__pyx_t_3)) {
19965  __pyx_t_7 = __pyx_t_3; __Pyx_INCREF(__pyx_t_7); __pyx_t_1 = 0;
19966  __pyx_t_10 = NULL;
19967  } else {
19968  __pyx_t_1 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19969  __Pyx_GOTREF(__pyx_t_7);
19970  __pyx_t_10 = Py_TYPE(__pyx_t_7)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19971  }
19972  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
19973  for (;;) {
19974  if (likely(!__pyx_t_10)) {
19975  if (likely(PyList_CheckExact(__pyx_t_7))) {
19976  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_7)) break;
19977  #if CYTHON_COMPILING_IN_CPYTHON
19978  __pyx_t_3 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19979  #else
19980  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19981  __Pyx_GOTREF(__pyx_t_3);
19982  #endif
19983  } else {
19984  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
19985  #if CYTHON_COMPILING_IN_CPYTHON
19986  __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19987  #else
19988  __pyx_t_3 = PySequence_ITEM(__pyx_t_7, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19989  __Pyx_GOTREF(__pyx_t_3);
19990  #endif
19991  }
19992  } else {
19993  __pyx_t_3 = __pyx_t_10(__pyx_t_7);
19994  if (unlikely(!__pyx_t_3)) {
19995  PyObject* exc_type = PyErr_Occurred();
19996  if (exc_type) {
19997  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
19998  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 945; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
19999  }
20000  break;
20001  }
20002  __Pyx_GOTREF(__pyx_t_3);
20003  }
20004  __Pyx_XDECREF_SET(__pyx_v_jj, __pyx_t_3);
20005  __pyx_t_3 = 0;
20006 
20007  /* "WaveTools.pyx":946
20008  * # Setting where each window starts and ends
20009  * for jj in range(self.Nwindows):
20010  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
20011  * tfirst = self.time[0] + self.Twindow
20012  * tlast = self.time[-1] - self.Twindow
20013  */
20014  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20015  __Pyx_GOTREF(__pyx_t_3);
20016  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_zeros); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20017  __Pyx_GOTREF(__pyx_t_4);
20018  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20019  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__112, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20020  __Pyx_GOTREF(__pyx_t_3);
20021  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20022  __Pyx_XDECREF_SET(__pyx_v_span, __pyx_t_3);
20023  __pyx_t_3 = 0;
20024 
20025  /* "WaveTools.pyx":947
20026  * for jj in range(self.Nwindows):
20027  * span = np.zeros(2,"d")
20028  * tfirst = self.time[0] + self.Twindow # <<<<<<<<<<<<<<
20029  * tlast = self.time[-1] - self.Twindow
20030  * if jj == 0:
20031  */
20032  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20033  __Pyx_GOTREF(__pyx_t_3);
20034  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20035  __Pyx_GOTREF(__pyx_t_4);
20036  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20037  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20038  __Pyx_GOTREF(__pyx_t_3);
20039  __pyx_t_6 = PyNumber_Add(__pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 947; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20040  __Pyx_GOTREF(__pyx_t_6);
20041  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20042  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20043  __Pyx_XDECREF_SET(__pyx_v_tfirst, __pyx_t_6);
20044  __pyx_t_6 = 0;
20045 
20046  /* "WaveTools.pyx":948
20047  * span = np.zeros(2,"d")
20048  * tfirst = self.time[0] + self.Twindow
20049  * tlast = self.time[-1] - self.Twindow # <<<<<<<<<<<<<<
20050  * if jj == 0:
20051  * ispan1 = 0
20052  */
20053  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20054  __Pyx_GOTREF(__pyx_t_6);
20055  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, -1L, long, 1, __Pyx_PyInt_From_long, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20056  __Pyx_GOTREF(__pyx_t_3);
20057  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20058  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20059  __Pyx_GOTREF(__pyx_t_6);
20060  __pyx_t_4 = PyNumber_Subtract(__pyx_t_3, __pyx_t_6); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20061  __Pyx_GOTREF(__pyx_t_4);
20062  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20063  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20064  __Pyx_XDECREF_SET(__pyx_v_tlast, __pyx_t_4);
20065  __pyx_t_4 = 0;
20066 
20067  /* "WaveTools.pyx":949
20068  * tfirst = self.time[0] + self.Twindow
20069  * tlast = self.time[-1] - self.Twindow
20070  * if jj == 0: # <<<<<<<<<<<<<<
20071  * ispan1 = 0
20072  * ispan2 = np.where(self.time> tfirst)[0][0]
20073  */
20074  __pyx_t_4 = __Pyx_PyInt_EqObjC(__pyx_v_jj, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20075  __Pyx_GOTREF(__pyx_t_4);
20076  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 949; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20077  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20078  if (__pyx_t_2) {
20079 
20080  /* "WaveTools.pyx":950
20081  * tlast = self.time[-1] - self.Twindow
20082  * if jj == 0:
20083  * ispan1 = 0 # <<<<<<<<<<<<<<
20084  * ispan2 = np.where(self.time> tfirst)[0][0]
20085  * elif jj == self.Nwindows-1:
20086  */
20087  __Pyx_INCREF(__pyx_int_0);
20088  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_int_0);
20089 
20090  /* "WaveTools.pyx":951
20091  * if jj == 0:
20092  * ispan1 = 0
20093  * ispan2 = np.where(self.time> tfirst)[0][0] # <<<<<<<<<<<<<<
20094  * elif jj == self.Nwindows-1:
20095  * ispan1 = np.where(self.time > tlast)[0][0]
20096  */
20097  __pyx_t_6 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20098  __Pyx_GOTREF(__pyx_t_6);
20099  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20100  __Pyx_GOTREF(__pyx_t_3);
20101  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20102  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20103  __Pyx_GOTREF(__pyx_t_6);
20104  __pyx_t_8 = PyObject_RichCompare(__pyx_t_6, __pyx_v_tfirst, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20105  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20106  __pyx_t_6 = NULL;
20107  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20108  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
20109  if (likely(__pyx_t_6)) {
20110  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20111  __Pyx_INCREF(__pyx_t_6);
20112  __Pyx_INCREF(function);
20113  __Pyx_DECREF_SET(__pyx_t_3, function);
20114  }
20115  }
20116  if (!__pyx_t_6) {
20117  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20118  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20119  __Pyx_GOTREF(__pyx_t_4);
20120  } else {
20121  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20122  __Pyx_GOTREF(__pyx_t_11);
20123  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_6); __pyx_t_6 = NULL;
20124  __Pyx_GIVEREF(__pyx_t_8);
20125  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
20126  __pyx_t_8 = 0;
20127  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20128  __Pyx_GOTREF(__pyx_t_4);
20129  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20130  }
20131  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20132  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20133  __Pyx_GOTREF(__pyx_t_3);
20134  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20135  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 951; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20136  __Pyx_GOTREF(__pyx_t_4);
20137  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20138  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_4);
20139  __pyx_t_4 = 0;
20140 
20141  /* "WaveTools.pyx":949
20142  * tfirst = self.time[0] + self.Twindow
20143  * tlast = self.time[-1] - self.Twindow
20144  * if jj == 0: # <<<<<<<<<<<<<<
20145  * ispan1 = 0
20146  * ispan2 = np.where(self.time> tfirst)[0][0]
20147  */
20148  goto __pyx_L71;
20149  }
20150 
20151  /* "WaveTools.pyx":952
20152  * ispan1 = 0
20153  * ispan2 = np.where(self.time> tfirst)[0][0]
20154  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
20155  * ispan1 = np.where(self.time > tlast)[0][0]
20156  * ispan2 = len(self.time)-1
20157  */
20158  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20159  __Pyx_GOTREF(__pyx_t_4);
20160  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_4, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20161  __Pyx_GOTREF(__pyx_t_3);
20162  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20163  __pyx_t_4 = PyObject_RichCompare(__pyx_v_jj, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20164  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20165  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20166  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20167  if (__pyx_t_2) {
20168 
20169  /* "WaveTools.pyx":953
20170  * ispan2 = np.where(self.time> tfirst)[0][0]
20171  * elif jj == self.Nwindows-1:
20172  * ispan1 = np.where(self.time > tlast)[0][0] # <<<<<<<<<<<<<<
20173  * ispan2 = len(self.time)-1
20174  * else:
20175  */
20176  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20177  __Pyx_GOTREF(__pyx_t_3);
20178  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20179  __Pyx_GOTREF(__pyx_t_11);
20180  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20181  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20182  __Pyx_GOTREF(__pyx_t_3);
20183  __pyx_t_8 = PyObject_RichCompare(__pyx_t_3, __pyx_v_tlast, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20184  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20185  __pyx_t_3 = NULL;
20186  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20187  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_11);
20188  if (likely(__pyx_t_3)) {
20189  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20190  __Pyx_INCREF(__pyx_t_3);
20191  __Pyx_INCREF(function);
20192  __Pyx_DECREF_SET(__pyx_t_11, function);
20193  }
20194  }
20195  if (!__pyx_t_3) {
20196  __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20197  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20198  __Pyx_GOTREF(__pyx_t_4);
20199  } else {
20200  __pyx_t_6 = PyTuple_New(1+1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20201  __Pyx_GOTREF(__pyx_t_6);
20202  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3); __pyx_t_3 = NULL;
20203  __Pyx_GIVEREF(__pyx_t_8);
20204  PyTuple_SET_ITEM(__pyx_t_6, 0+1, __pyx_t_8);
20205  __pyx_t_8 = 0;
20206  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20207  __Pyx_GOTREF(__pyx_t_4);
20208  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20209  }
20210  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20211  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_4, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20212  __Pyx_GOTREF(__pyx_t_11);
20213  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20214  __pyx_t_4 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 953; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20215  __Pyx_GOTREF(__pyx_t_4);
20216  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20217  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_4);
20218  __pyx_t_4 = 0;
20219 
20220  /* "WaveTools.pyx":954
20221  * elif jj == self.Nwindows-1:
20222  * ispan1 = np.where(self.time > tlast)[0][0]
20223  * ispan2 = len(self.time)-1 # <<<<<<<<<<<<<<
20224  * else:
20225  * tstart = self.time[ispan2] - self.Toverlap
20226  */
20227  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20228  __Pyx_GOTREF(__pyx_t_4);
20229  __pyx_t_13 = PyObject_Length(__pyx_t_4); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20230  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20231  __pyx_t_4 = PyInt_FromSsize_t((__pyx_t_13 - 1)); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20232  __Pyx_GOTREF(__pyx_t_4);
20233  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_4);
20234  __pyx_t_4 = 0;
20235 
20236  /* "WaveTools.pyx":952
20237  * ispan1 = 0
20238  * ispan2 = np.where(self.time> tfirst)[0][0]
20239  * elif jj == self.Nwindows-1: # <<<<<<<<<<<<<<
20240  * ispan1 = np.where(self.time > tlast)[0][0]
20241  * ispan2 = len(self.time)-1
20242  */
20243  goto __pyx_L71;
20244  }
20245 
20246  /* "WaveTools.pyx":956
20247  * ispan2 = len(self.time)-1
20248  * else:
20249  * tstart = self.time[ispan2] - self.Toverlap # <<<<<<<<<<<<<<
20250  * ispan1 = np.where(self.time > tstart)[0][0]
20251  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20252  */
20253  /*else*/ {
20254  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20255  __Pyx_GOTREF(__pyx_t_4);
20256  if (unlikely(!__pyx_v_ispan2)) { __Pyx_RaiseUnboundLocalError("ispan2"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
20257  __pyx_t_11 = PyObject_GetItem(__pyx_t_4, __pyx_v_ispan2); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20258  __Pyx_GOTREF(__pyx_t_11);
20259  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20260  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Toverlap); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20261  __Pyx_GOTREF(__pyx_t_4);
20262  __pyx_t_6 = PyNumber_Subtract(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20263  __Pyx_GOTREF(__pyx_t_6);
20264  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20265  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20266  __Pyx_XDECREF_SET(__pyx_v_tstart, __pyx_t_6);
20267  __pyx_t_6 = 0;
20268 
20269  /* "WaveTools.pyx":957
20270  * else:
20271  * tstart = self.time[ispan2] - self.Toverlap
20272  * ispan1 = np.where(self.time > tstart)[0][0] # <<<<<<<<<<<<<<
20273  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20274  * span[0] = ispan1
20275  */
20276  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20277  __Pyx_GOTREF(__pyx_t_4);
20278  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_where); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20279  __Pyx_GOTREF(__pyx_t_11);
20280  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20281  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20282  __Pyx_GOTREF(__pyx_t_4);
20283  __pyx_t_8 = PyObject_RichCompare(__pyx_t_4, __pyx_v_tstart, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20284  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20285  __pyx_t_4 = NULL;
20286  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20287  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
20288  if (likely(__pyx_t_4)) {
20289  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20290  __Pyx_INCREF(__pyx_t_4);
20291  __Pyx_INCREF(function);
20292  __Pyx_DECREF_SET(__pyx_t_11, function);
20293  }
20294  }
20295  if (!__pyx_t_4) {
20296  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20297  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20298  __Pyx_GOTREF(__pyx_t_6);
20299  } else {
20300  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20301  __Pyx_GOTREF(__pyx_t_3);
20302  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20303  __Pyx_GIVEREF(__pyx_t_8);
20304  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_8);
20305  __pyx_t_8 = 0;
20306  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20307  __Pyx_GOTREF(__pyx_t_6);
20308  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20309  }
20310  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20311  __pyx_t_11 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20312  __Pyx_GOTREF(__pyx_t_11);
20313  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20314  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_11, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 957; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20315  __Pyx_GOTREF(__pyx_t_6);
20316  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20317  __Pyx_XDECREF_SET(__pyx_v_ispan1, __pyx_t_6);
20318  __pyx_t_6 = 0;
20319 
20320  /* "WaveTools.pyx":958
20321  * tstart = self.time[ispan2] - self.Toverlap
20322  * ispan1 = np.where(self.time > tstart)[0][0]
20323  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0] # <<<<<<<<<<<<<<
20324  * span[0] = ispan1
20325  * span[1] = ispan2
20326  */
20327  __pyx_t_11 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20328  __Pyx_GOTREF(__pyx_t_11);
20329  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_where); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20330  __Pyx_GOTREF(__pyx_t_3);
20331  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20332  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20333  __Pyx_GOTREF(__pyx_t_11);
20334  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20335  __Pyx_GOTREF(__pyx_t_8);
20336  __pyx_t_4 = PyNumber_Add(__pyx_v_tstart, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20337  __Pyx_GOTREF(__pyx_t_4);
20338  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20339  __pyx_t_8 = PyObject_RichCompare(__pyx_t_11, __pyx_t_4, Py_GT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20340  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20341  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20342  __pyx_t_4 = NULL;
20343  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20344  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
20345  if (likely(__pyx_t_4)) {
20346  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20347  __Pyx_INCREF(__pyx_t_4);
20348  __Pyx_INCREF(function);
20349  __Pyx_DECREF_SET(__pyx_t_3, function);
20350  }
20351  }
20352  if (!__pyx_t_4) {
20353  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20354  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20355  __Pyx_GOTREF(__pyx_t_6);
20356  } else {
20357  __pyx_t_11 = PyTuple_New(1+1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20358  __Pyx_GOTREF(__pyx_t_11);
20359  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_4); __pyx_t_4 = NULL;
20360  __Pyx_GIVEREF(__pyx_t_8);
20361  PyTuple_SET_ITEM(__pyx_t_11, 0+1, __pyx_t_8);
20362  __pyx_t_8 = 0;
20363  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_11, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20364  __Pyx_GOTREF(__pyx_t_6);
20365  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20366  }
20367  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20368  __pyx_t_3 = __Pyx_GetItemInt(__pyx_t_6, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20369  __Pyx_GOTREF(__pyx_t_3);
20370  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20371  __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20372  __Pyx_GOTREF(__pyx_t_6);
20373  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20374  __Pyx_XDECREF_SET(__pyx_v_ispan2, __pyx_t_6);
20375  __pyx_t_6 = 0;
20376  }
20377  __pyx_L71:;
20378 
20379  /* "WaveTools.pyx":959
20380  * ispan1 = np.where(self.time > tstart)[0][0]
20381  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20382  * span[0] = ispan1 # <<<<<<<<<<<<<<
20383  * span[1] = ispan2
20384  * # Storing time series in windows and handover times
20385  */
20386  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 0, __pyx_v_ispan1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 959; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20387 
20388  /* "WaveTools.pyx":960
20389  * ispan2 = np.where(self.time > tstart + self.Twindow )[0][0]
20390  * span[0] = ispan1
20391  * span[1] = ispan2 # <<<<<<<<<<<<<<
20392  * # Storing time series in windows and handover times
20393  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
20394  */
20395  if (unlikely(__Pyx_SetItemInt(__pyx_v_span, 1, __pyx_v_ispan2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20396 
20397  /* "WaveTools.pyx":962
20398  * span[1] = ispan2
20399  * # Storing time series in windows and handover times
20400  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow ) # <<<<<<<<<<<<<<
20401  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2])))
20402  * # Decomposing windows to frequency domain
20403  */
20404  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20405  __Pyx_GOTREF(__pyx_t_6);
20406  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20407  __Pyx_GOTREF(__pyx_t_3);
20408  __pyx_t_11 = PyObject_GetItem(__pyx_t_3, __pyx_v_ispan2); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20409  __Pyx_GOTREF(__pyx_t_11);
20410  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20411  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20412  __Pyx_GOTREF(__pyx_t_3);
20413  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20414  __Pyx_GOTREF(__pyx_t_8);
20415  __pyx_t_4 = PyNumber_Multiply(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20416  __Pyx_GOTREF(__pyx_t_4);
20417  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20418  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20419  __pyx_t_8 = PyNumber_Subtract(__pyx_t_11, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20420  __Pyx_GOTREF(__pyx_t_8);
20421  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20422  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20423  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_6, __pyx_t_8); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20424  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20425  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20426 
20427  /* "WaveTools.pyx":963
20428  * # Storing time series in windows and handover times
20429  * self.windows_handover.append( self.time[ispan2] - self.handover*self.Twindow )
20430  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2]))) # <<<<<<<<<<<<<<
20431  * # Decomposing windows to frequency domain
20432  * self.decompose_window = []
20433  */
20434  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20435  __Pyx_GOTREF(__pyx_t_8);
20436  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20437  __Pyx_GOTREF(__pyx_t_4);
20438  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20439  __Pyx_GOTREF(__pyx_t_11);
20440  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20441  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20442  __Pyx_GOTREF(__pyx_t_4);
20443  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20444  __Pyx_GOTREF(__pyx_t_3);
20445  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20446  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_eta); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20447  __Pyx_GOTREF(__pyx_t_4);
20448  __pyx_t_5 = __Pyx_PyObject_GetSlice(__pyx_t_4, 0, 0, &__pyx_v_ispan1, &__pyx_v_ispan2, NULL, 0, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20449  __Pyx_GOTREF(__pyx_t_5);
20450  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20451  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20452  __Pyx_GOTREF(__pyx_t_4);
20453  __Pyx_GIVEREF(__pyx_t_3);
20454  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
20455  __Pyx_GIVEREF(__pyx_t_5);
20456  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5);
20457  __pyx_t_3 = 0;
20458  __pyx_t_5 = 0;
20459  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_zip, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20460  __Pyx_GOTREF(__pyx_t_5);
20461  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
20462  __pyx_t_4 = NULL;
20463  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
20464  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_11);
20465  if (likely(__pyx_t_4)) {
20466  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
20467  __Pyx_INCREF(__pyx_t_4);
20468  __Pyx_INCREF(function);
20469  __Pyx_DECREF_SET(__pyx_t_11, function);
20470  }
20471  }
20472  if (!__pyx_t_4) {
20473  __pyx_t_6 = __Pyx_PyObject_CallOneArg(__pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20474  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20475  __Pyx_GOTREF(__pyx_t_6);
20476  } else {
20477  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20478  __Pyx_GOTREF(__pyx_t_3);
20479  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4); __pyx_t_4 = NULL;
20480  __Pyx_GIVEREF(__pyx_t_5);
20481  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_5);
20482  __pyx_t_5 = 0;
20483  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20484  __Pyx_GOTREF(__pyx_t_6);
20485  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20486  }
20487  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20488  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_8, __pyx_t_6); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20489  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20490  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
20491 
20492  /* "WaveTools.pyx":945
20493  * logEvent("WaveTools.py: Using %s windows for reconstruction with %s sec duration and %s per cent overlap" %(self.Nwindows, self.Twindow,100*self.overlap ))
20494  * # Setting where each window starts and ends
20495  * for jj in range(self.Nwindows): # <<<<<<<<<<<<<<
20496  * span = np.zeros(2,"d")
20497  * tfirst = self.time[0] + self.Twindow
20498  */
20499  }
20500  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20501 
20502  /* "WaveTools.pyx":965
20503  * self.windows_rec.append(np.array(zip(self.time[ispan1:ispan2],self.eta[ispan1:ispan2])))
20504  * # Decomposing windows to frequency domain
20505  * self.decompose_window = [] # <<<<<<<<<<<<<<
20506  * # style = "k-"
20507  * # ii = 0
20508  */
20509  __pyx_t_7 = PyList_New(0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20510  __Pyx_GOTREF(__pyx_t_7);
20511  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20512  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20513 
20514  /* "WaveTools.pyx":969
20515  * # ii = 0
20516  *
20517  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
20518  * self.nfft=len(wind[:,0])
20519  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20520  */
20521  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20522  __Pyx_GOTREF(__pyx_t_7);
20523  if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
20524  __pyx_t_6 = __pyx_t_7; __Pyx_INCREF(__pyx_t_6); __pyx_t_1 = 0;
20525  __pyx_t_10 = NULL;
20526  } else {
20527  __pyx_t_1 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20528  __Pyx_GOTREF(__pyx_t_6);
20529  __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20530  }
20531  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20532  for (;;) {
20533  if (likely(!__pyx_t_10)) {
20534  if (likely(PyList_CheckExact(__pyx_t_6))) {
20535  if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_6)) break;
20536  #if CYTHON_COMPILING_IN_CPYTHON
20537  __pyx_t_7 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_7); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20538  #else
20539  __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20540  __Pyx_GOTREF(__pyx_t_7);
20541  #endif
20542  } else {
20543  if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
20544  #if CYTHON_COMPILING_IN_CPYTHON
20545  __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_1); __Pyx_INCREF(__pyx_t_7); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20546  #else
20547  __pyx_t_7 = PySequence_ITEM(__pyx_t_6, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20548  __Pyx_GOTREF(__pyx_t_7);
20549  #endif
20550  }
20551  } else {
20552  __pyx_t_7 = __pyx_t_10(__pyx_t_6);
20553  if (unlikely(!__pyx_t_7)) {
20554  PyObject* exc_type = PyErr_Occurred();
20555  if (exc_type) {
20556  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
20557  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20558  }
20559  break;
20560  }
20561  __Pyx_GOTREF(__pyx_t_7);
20562  }
20563  __Pyx_XDECREF_SET(__pyx_v_wind, __pyx_t_7);
20564  __pyx_t_7 = 0;
20565 
20566  /* "WaveTools.pyx":970
20567  *
20568  * for wind in self.windows_rec:
20569  * self.nfft=len(wind[:,0]) # <<<<<<<<<<<<<<
20570  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20571  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20572  */
20573  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__114); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20574  __Pyx_GOTREF(__pyx_t_7);
20575  __pyx_t_13 = PyObject_Length(__pyx_t_7); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20576  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20577  __pyx_t_7 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20578  __Pyx_GOTREF(__pyx_t_7);
20579  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_nfft, __pyx_t_7) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20580  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20581 
20582  /* "WaveTools.pyx":971
20583  * for wind in self.windows_rec:
20584  * self.nfft=len(wind[:,0])
20585  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff) # <<<<<<<<<<<<<<
20586  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20587  * self.N = min(self.N, len(decomp[0]))
20588  */
20589  __Pyx_INCREF(__pyx_tuple__116);
20590  __pyx_t_18 = __pyx_tuple__116;
20591  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_t_18); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20592  __Pyx_GOTREF(__pyx_t_7);
20593  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_nfft); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20594  __Pyx_GOTREF(__pyx_t_8);
20595  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20596  __Pyx_GOTREF(__pyx_t_11);
20597  __Pyx_GIVEREF(__pyx_t_8);
20598  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_8);
20599  __pyx_t_8 = 0;
20600  __pyx_t_8 = PyDict_New(); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20601  __Pyx_GOTREF(__pyx_t_8);
20602  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_cutoff); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20603  __Pyx_GOTREF(__pyx_t_3);
20604  if (PyDict_SetItem(__pyx_t_8, __pyx_n_s_cutoff, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20605  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20606  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_wind_filt, __pyx_t_11, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20607  __Pyx_GOTREF(__pyx_t_3);
20608  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20609  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20610  __pyx_t_8 = PyNumber_InPlaceMultiply(__pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20611  __Pyx_GOTREF(__pyx_t_8);
20612  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
20613  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20614  if (unlikely(PyObject_SetItem(__pyx_v_wind, __pyx_t_18, __pyx_t_8) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20615  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20616  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
20617 
20618  /* "WaveTools.pyx":972
20619  * self.nfft=len(wind[:,0])
20620  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20621  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt) # <<<<<<<<<<<<<<
20622  * self.N = min(self.N, len(decomp[0]))
20623  * Nftemp = self.N
20624  */
20625  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_decompose_tseries); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20626  __Pyx_GOTREF(__pyx_t_3);
20627  __pyx_t_7 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__118); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20628  __Pyx_GOTREF(__pyx_t_7);
20629  __pyx_t_11 = PyObject_GetItem(__pyx_v_wind, __pyx_tuple__120); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20630  __Pyx_GOTREF(__pyx_t_11);
20631  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_dt); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20632  __Pyx_GOTREF(__pyx_t_5);
20633  __pyx_t_4 = NULL;
20634  __pyx_t_13 = 0;
20635  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
20636  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
20637  if (likely(__pyx_t_4)) {
20638  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
20639  __Pyx_INCREF(__pyx_t_4);
20640  __Pyx_INCREF(function);
20641  __Pyx_DECREF_SET(__pyx_t_3, function);
20642  __pyx_t_13 = 1;
20643  }
20644  }
20645  __pyx_t_19 = PyTuple_New(3+__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20646  __Pyx_GOTREF(__pyx_t_19);
20647  if (__pyx_t_4) {
20648  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_4); __pyx_t_4 = NULL;
20649  }
20650  __Pyx_GIVEREF(__pyx_t_7);
20651  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_13, __pyx_t_7);
20652  __Pyx_GIVEREF(__pyx_t_11);
20653  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_13, __pyx_t_11);
20654  __Pyx_GIVEREF(__pyx_t_5);
20655  PyTuple_SET_ITEM(__pyx_t_19, 2+__pyx_t_13, __pyx_t_5);
20656  __pyx_t_7 = 0;
20657  __pyx_t_11 = 0;
20658  __pyx_t_5 = 0;
20659  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_19, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20660  __Pyx_GOTREF(__pyx_t_8);
20661  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20662  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20663  __Pyx_XDECREF_SET(__pyx_v_decomp, __pyx_t_8);
20664  __pyx_t_8 = 0;
20665 
20666  /* "WaveTools.pyx":973
20667  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
20668  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20669  * self.N = min(self.N, len(decomp[0])) # <<<<<<<<<<<<<<
20670  * Nftemp = self.N
20671  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20672  */
20673  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20674  __Pyx_GOTREF(__pyx_t_8);
20675  __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20676  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20677  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20678  __Pyx_GOTREF(__pyx_t_8);
20679  __pyx_t_19 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20680  __Pyx_GOTREF(__pyx_t_19);
20681  __pyx_t_5 = PyObject_RichCompare(__pyx_t_19, __pyx_t_8, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20682  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20683  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20684  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20685  if (__pyx_t_2) {
20686  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20687  __Pyx_GOTREF(__pyx_t_5);
20688  __pyx_t_3 = __pyx_t_5;
20689  __pyx_t_5 = 0;
20690  } else {
20691  __Pyx_INCREF(__pyx_t_8);
20692  __pyx_t_3 = __pyx_t_8;
20693  }
20694  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20695  __pyx_t_8 = __pyx_t_3;
20696  __Pyx_INCREF(__pyx_t_8);
20697  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20698  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_N, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 973; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20699  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20700 
20701  /* "WaveTools.pyx":974
20702  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
20703  * self.N = min(self.N, len(decomp[0]))
20704  * Nftemp = self.N # <<<<<<<<<<<<<<
20705  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20706  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20707  */
20708  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20709  __Pyx_GOTREF(__pyx_t_8);
20710  __Pyx_XDECREF_SET(__pyx_v_Nftemp, __pyx_t_8);
20711  __pyx_t_8 = 0;
20712 
20713  /* "WaveTools.pyx":975
20714  * self.N = min(self.N, len(decomp[0]))
20715  * Nftemp = self.N
20716  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0] # <<<<<<<<<<<<<<
20717  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20718  * imin = max(0,ipeak - Nftemp/2)
20719  */
20720  __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20721  __Pyx_GOTREF(__pyx_t_3);
20722  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_where); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20723  __Pyx_GOTREF(__pyx_t_5);
20724  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20725  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20726  __Pyx_GOTREF(__pyx_t_3);
20727  __pyx_t_19 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_19 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20728  __Pyx_GOTREF(__pyx_t_19);
20729  __pyx_t_11 = PyTuple_New(1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20730  __Pyx_GOTREF(__pyx_t_11);
20731  __Pyx_GIVEREF(__pyx_t_19);
20732  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_19);
20733  __pyx_t_19 = 0;
20734  __pyx_t_19 = __Pyx_PyObject_Call(__pyx_builtin_max, __pyx_t_11, NULL); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20735  __Pyx_GOTREF(__pyx_t_19);
20736  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20737  __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_19, Py_EQ); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20738  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20739  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
20740  __pyx_t_19 = NULL;
20741  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
20742  __pyx_t_19 = PyMethod_GET_SELF(__pyx_t_5);
20743  if (likely(__pyx_t_19)) {
20744  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
20745  __Pyx_INCREF(__pyx_t_19);
20746  __Pyx_INCREF(function);
20747  __Pyx_DECREF_SET(__pyx_t_5, function);
20748  }
20749  }
20750  if (!__pyx_t_19) {
20751  __pyx_t_8 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_11); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20752  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20753  __Pyx_GOTREF(__pyx_t_8);
20754  } else {
20755  __pyx_t_3 = PyTuple_New(1+1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20756  __Pyx_GOTREF(__pyx_t_3);
20757  __Pyx_GIVEREF(__pyx_t_19); PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_19); __pyx_t_19 = NULL;
20758  __Pyx_GIVEREF(__pyx_t_11);
20759  PyTuple_SET_ITEM(__pyx_t_3, 0+1, __pyx_t_11);
20760  __pyx_t_11 = 0;
20761  __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_3, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20762  __Pyx_GOTREF(__pyx_t_8);
20763  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20764  }
20765  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20766  __pyx_t_5 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20767  __Pyx_GOTREF(__pyx_t_5);
20768  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20769  __pyx_t_8 = __Pyx_GetItemInt(__pyx_t_5, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 975; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20770  __Pyx_GOTREF(__pyx_t_8);
20771  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20772  __Pyx_XDECREF_SET(__pyx_v_ipeak, __pyx_t_8);
20773  __pyx_t_8 = 0;
20774 
20775  /* "WaveTools.pyx":976
20776  * Nftemp = self.N
20777  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20778  * imax = min(ipeak + Nftemp/2,len(decomp[1])) # <<<<<<<<<<<<<<
20779  * imin = max(0,ipeak - Nftemp/2)
20780  * self.Nf = imax-imin
20781  */
20782  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20783  __Pyx_GOTREF(__pyx_t_8);
20784  __pyx_t_13 = PyObject_Length(__pyx_t_8); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20785  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20786  __pyx_t_8 = __Pyx_PyNumber_Divide(__pyx_v_Nftemp, __pyx_int_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20787  __Pyx_GOTREF(__pyx_t_8);
20788  __pyx_t_5 = PyNumber_Add(__pyx_v_ipeak, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20789  __Pyx_GOTREF(__pyx_t_5);
20790  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20791  __pyx_t_3 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20792  __Pyx_GOTREF(__pyx_t_3);
20793  __pyx_t_11 = PyObject_RichCompare(__pyx_t_3, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_11); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20794  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20795  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_11); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20796  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20797  if (__pyx_t_2) {
20798  __pyx_t_11 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20799  __Pyx_GOTREF(__pyx_t_11);
20800  __pyx_t_8 = __pyx_t_11;
20801  __pyx_t_11 = 0;
20802  } else {
20803  __Pyx_INCREF(__pyx_t_5);
20804  __pyx_t_8 = __pyx_t_5;
20805  }
20806  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20807  __pyx_t_5 = __pyx_t_8;
20808  __Pyx_INCREF(__pyx_t_5);
20809  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20810  __Pyx_XDECREF_SET(__pyx_v_imax, __pyx_t_5);
20811  __pyx_t_5 = 0;
20812 
20813  /* "WaveTools.pyx":977
20814  * ipeak = np.where(decomp[1] == max(decomp[1]))[0][0]
20815  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20816  * imin = max(0,ipeak - Nftemp/2) # <<<<<<<<<<<<<<
20817  * self.Nf = imax-imin
20818  * if (self.Nf < self.N):
20819  */
20820  __pyx_t_5 = __Pyx_PyNumber_Divide(__pyx_v_Nftemp, __pyx_int_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20821  __Pyx_GOTREF(__pyx_t_5);
20822  __pyx_t_8 = PyNumber_Subtract(__pyx_v_ipeak, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20823  __Pyx_GOTREF(__pyx_t_8);
20824  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20825  __pyx_t_12 = 0;
20826  __pyx_t_11 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20827  __Pyx_GOTREF(__pyx_t_11);
20828  __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_t_11, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20829  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
20830  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20831  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20832  if (__pyx_t_2) {
20833  __Pyx_INCREF(__pyx_t_8);
20834  __pyx_t_5 = __pyx_t_8;
20835  } else {
20836  __pyx_t_3 = __Pyx_PyInt_From_long(__pyx_t_12); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 977; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20837  __Pyx_GOTREF(__pyx_t_3);
20838  __pyx_t_5 = __pyx_t_3;
20839  __pyx_t_3 = 0;
20840  }
20841  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20842  __pyx_t_8 = __pyx_t_5;
20843  __Pyx_INCREF(__pyx_t_8);
20844  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20845  __Pyx_XDECREF_SET(__pyx_v_imin, __pyx_t_8);
20846  __pyx_t_8 = 0;
20847 
20848  /* "WaveTools.pyx":978
20849  * imax = min(ipeak + Nftemp/2,len(decomp[1]))
20850  * imin = max(0,ipeak - Nftemp/2)
20851  * self.Nf = imax-imin # <<<<<<<<<<<<<<
20852  * if (self.Nf < self.N):
20853  * if imin == 0:
20854  */
20855  __pyx_t_8 = PyNumber_Subtract(__pyx_v_imax, __pyx_v_imin); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20856  __Pyx_GOTREF(__pyx_t_8);
20857  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 978; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20858  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20859 
20860  /* "WaveTools.pyx":979
20861  * imin = max(0,ipeak - Nftemp/2)
20862  * self.Nf = imax-imin
20863  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
20864  * if imin == 0:
20865  * imax = imax + (self.N - self.Nf)
20866  */
20867  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20868  __Pyx_GOTREF(__pyx_t_8);
20869  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20870  __Pyx_GOTREF(__pyx_t_5);
20871  __pyx_t_3 = PyObject_RichCompare(__pyx_t_8, __pyx_t_5, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20872  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20873  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20874  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 979; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20875  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20876  if (__pyx_t_2) {
20877 
20878  /* "WaveTools.pyx":980
20879  * self.Nf = imax-imin
20880  * if (self.Nf < self.N):
20881  * if imin == 0: # <<<<<<<<<<<<<<
20882  * imax = imax + (self.N - self.Nf)
20883  * else:
20884  */
20885  __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_imin, __pyx_int_0, 0, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20886  __Pyx_GOTREF(__pyx_t_3);
20887  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 980; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20888  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20889  if (__pyx_t_2) {
20890 
20891  /* "WaveTools.pyx":981
20892  * if (self.Nf < self.N):
20893  * if imin == 0:
20894  * imax = imax + (self.N - self.Nf) # <<<<<<<<<<<<<<
20895  * else:
20896  * imin = imin - (self.N - self.Nf)
20897  */
20898  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20899  __Pyx_GOTREF(__pyx_t_3);
20900  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20901  __Pyx_GOTREF(__pyx_t_5);
20902  __pyx_t_8 = PyNumber_Subtract(__pyx_t_3, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20903  __Pyx_GOTREF(__pyx_t_8);
20904  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20905  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20906  __pyx_t_5 = PyNumber_Add(__pyx_v_imax, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20907  __Pyx_GOTREF(__pyx_t_5);
20908  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20909  __Pyx_DECREF_SET(__pyx_v_imax, __pyx_t_5);
20910  __pyx_t_5 = 0;
20911 
20912  /* "WaveTools.pyx":980
20913  * self.Nf = imax-imin
20914  * if (self.Nf < self.N):
20915  * if imin == 0: # <<<<<<<<<<<<<<
20916  * imax = imax + (self.N - self.Nf)
20917  * else:
20918  */
20919  goto __pyx_L75;
20920  }
20921 
20922  /* "WaveTools.pyx":983
20923  * imax = imax + (self.N - self.Nf)
20924  * else:
20925  * imin = imin - (self.N - self.Nf) # <<<<<<<<<<<<<<
20926  * self.Nf = self.N
20927  *
20928  */
20929  /*else*/ {
20930  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20931  __Pyx_GOTREF(__pyx_t_5);
20932  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20933  __Pyx_GOTREF(__pyx_t_8);
20934  __pyx_t_3 = PyNumber_Subtract(__pyx_t_5, __pyx_t_8); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20935  __Pyx_GOTREF(__pyx_t_3);
20936  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
20937  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20938  __pyx_t_8 = PyNumber_Subtract(__pyx_v_imin, __pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 983; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20939  __Pyx_GOTREF(__pyx_t_8);
20940  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20941  __Pyx_DECREF_SET(__pyx_v_imin, __pyx_t_8);
20942  __pyx_t_8 = 0;
20943  }
20944  __pyx_L75:;
20945 
20946  /* "WaveTools.pyx":984
20947  * else:
20948  * imin = imin - (self.N - self.Nf)
20949  * self.Nf = self.N # <<<<<<<<<<<<<<
20950  *
20951  * decomp[1] = decomp[1][imin:imax]
20952  */
20953  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_N); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20954  __Pyx_GOTREF(__pyx_t_8);
20955  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_n_s_Nf, __pyx_t_8) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 984; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20956  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20957 
20958  /* "WaveTools.pyx":979
20959  * imin = max(0,ipeak - Nftemp/2)
20960  * self.Nf = imax-imin
20961  * if (self.Nf < self.N): # <<<<<<<<<<<<<<
20962  * if imin == 0:
20963  * imax = imax + (self.N - self.Nf)
20964  */
20965  }
20966 
20967  /* "WaveTools.pyx":986
20968  * self.Nf = self.N
20969  *
20970  * decomp[1] = decomp[1][imin:imax] # <<<<<<<<<<<<<<
20971  * decomp[0] = decomp[0][imin:imax]
20972  * decomp[2] = -decomp[2][imin:imax]
20973  */
20974  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20975  __Pyx_GOTREF(__pyx_t_8);
20976  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20977  __Pyx_GOTREF(__pyx_t_3);
20978  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20979  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 1, __pyx_t_3, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 986; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20980  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20981 
20982  /* "WaveTools.pyx":987
20983  *
20984  * decomp[1] = decomp[1][imin:imax]
20985  * decomp[0] = decomp[0][imin:imax] # <<<<<<<<<<<<<<
20986  * decomp[2] = -decomp[2][imin:imax]
20987  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
20988  */
20989  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
20990  __Pyx_GOTREF(__pyx_t_3);
20991  __pyx_t_8 = __Pyx_PyObject_GetSlice(__pyx_t_3, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20992  __Pyx_GOTREF(__pyx_t_8);
20993  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
20994  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 0, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
20995  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
20996 
20997  /* "WaveTools.pyx":988
20998  * decomp[1] = decomp[1][imin:imax]
20999  * decomp[0] = decomp[0][imin:imax]
21000  * decomp[2] = -decomp[2][imin:imax] # <<<<<<<<<<<<<<
21001  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21002  * kDir = np.zeros((len(ki),3),"d")
21003  */
21004  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_decomp, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21005  __Pyx_GOTREF(__pyx_t_8);
21006  __pyx_t_3 = __Pyx_PyObject_GetSlice(__pyx_t_8, 0, 0, &__pyx_v_imin, &__pyx_v_imax, NULL, 0, 0, 1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21007  __Pyx_GOTREF(__pyx_t_3);
21008  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21009  __pyx_t_8 = PyNumber_Negative(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21010  __Pyx_GOTREF(__pyx_t_8);
21011  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21012  if (unlikely(__Pyx_SetItemInt(__pyx_v_decomp, 2, __pyx_t_8, long, 1, __Pyx_PyInt_From_long, 0, 0, 1) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 988; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21013  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21014 
21015  /* "WaveTools.pyx":989
21016  * decomp[0] = decomp[0][imin:imax]
21017  * decomp[2] = -decomp[2][imin:imax]
21018  * ki = dispersion(decomp[0],self.depth,g=self.gAbs) # <<<<<<<<<<<<<<
21019  * kDir = np.zeros((len(ki),3),"d")
21020  * for ii in range(len(ki)):
21021  */
21022  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_dispersion); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21023  __Pyx_GOTREF(__pyx_t_8);
21024  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_decomp, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21025  __Pyx_GOTREF(__pyx_t_3);
21026  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21027  __Pyx_GOTREF(__pyx_t_5);
21028  __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21029  __Pyx_GOTREF(__pyx_t_11);
21030  __Pyx_GIVEREF(__pyx_t_3);
21031  PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_3);
21032  __Pyx_GIVEREF(__pyx_t_5);
21033  PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_5);
21034  __pyx_t_3 = 0;
21035  __pyx_t_5 = 0;
21036  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21037  __Pyx_GOTREF(__pyx_t_5);
21038  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_gAbs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21039  __Pyx_GOTREF(__pyx_t_3);
21040  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_g, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21041  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21042  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_11, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 989; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21043  __Pyx_GOTREF(__pyx_t_3);
21044  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21045  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21046  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21047  __Pyx_XDECREF_SET(__pyx_v_ki, __pyx_t_3);
21048  __pyx_t_3 = 0;
21049 
21050  /* "WaveTools.pyx":990
21051  * decomp[2] = -decomp[2][imin:imax]
21052  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21053  * kDir = np.zeros((len(ki),3),"d") # <<<<<<<<<<<<<<
21054  * for ii in range(len(ki)):
21055  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21056  */
21057  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21058  __Pyx_GOTREF(__pyx_t_5);
21059  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_zeros); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21060  __Pyx_GOTREF(__pyx_t_11);
21061  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21062  __pyx_t_13 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21063  __pyx_t_5 = PyInt_FromSsize_t(__pyx_t_13); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21064  __Pyx_GOTREF(__pyx_t_5);
21065  __pyx_t_8 = PyTuple_New(2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21066  __Pyx_GOTREF(__pyx_t_8);
21067  __Pyx_GIVEREF(__pyx_t_5);
21068  PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
21069  __Pyx_INCREF(__pyx_int_3);
21070  __Pyx_GIVEREF(__pyx_int_3);
21071  PyTuple_SET_ITEM(__pyx_t_8, 1, __pyx_int_3);
21072  __pyx_t_5 = 0;
21073  __pyx_t_5 = NULL;
21074  __pyx_t_13 = 0;
21075  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_11))) {
21076  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_11);
21077  if (likely(__pyx_t_5)) {
21078  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_11);
21079  __Pyx_INCREF(__pyx_t_5);
21080  __Pyx_INCREF(function);
21081  __Pyx_DECREF_SET(__pyx_t_11, function);
21082  __pyx_t_13 = 1;
21083  }
21084  }
21085  __pyx_t_19 = PyTuple_New(2+__pyx_t_13); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21086  __Pyx_GOTREF(__pyx_t_19);
21087  if (__pyx_t_5) {
21088  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_19, 0, __pyx_t_5); __pyx_t_5 = NULL;
21089  }
21090  __Pyx_GIVEREF(__pyx_t_8);
21091  PyTuple_SET_ITEM(__pyx_t_19, 0+__pyx_t_13, __pyx_t_8);
21092  __Pyx_INCREF(__pyx_n_s_d);
21093  __Pyx_GIVEREF(__pyx_n_s_d);
21094  PyTuple_SET_ITEM(__pyx_t_19, 1+__pyx_t_13, __pyx_n_s_d);
21095  __pyx_t_8 = 0;
21096  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_11, __pyx_t_19, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 990; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21097  __Pyx_GOTREF(__pyx_t_3);
21098  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
21099  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21100  __Pyx_XDECREF_SET(__pyx_v_kDir, __pyx_t_3);
21101  __pyx_t_3 = 0;
21102 
21103  /* "WaveTools.pyx":991
21104  * ki = dispersion(decomp[0],self.depth,g=self.gAbs)
21105  * kDir = np.zeros((len(ki),3),"d")
21106  * for ii in range(len(ki)): # <<<<<<<<<<<<<<
21107  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21108  * decomp.append(kDir)
21109  */
21110  __pyx_t_13 = PyObject_Length(__pyx_v_ki); if (unlikely(__pyx_t_13 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21111  for (__pyx_t_20 = 0; __pyx_t_20 < __pyx_t_13; __pyx_t_20+=1) {
21112  __pyx_v_ii = __pyx_t_20;
21113 
21114  /* "WaveTools.pyx":992
21115  * kDir = np.zeros((len(ki),3),"d")
21116  * for ii in range(len(ki)):
21117  * kDir[ii,:] = ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
21118  * decomp.append(kDir)
21119  * decomp.append(ki)
21120  */
21121  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_ki, __pyx_v_ii, Py_ssize_t, 1, PyInt_FromSsize_t, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21122  __Pyx_GOTREF(__pyx_t_3);
21123  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_waveDir); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21124  __Pyx_GOTREF(__pyx_t_11);
21125  __pyx_t_19 = __Pyx_PyObject_GetSlice(__pyx_t_11, 0, 0, NULL, NULL, &__pyx_slice__121, 0, 0, 1); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21126  __Pyx_GOTREF(__pyx_t_19);
21127  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21128  __pyx_t_11 = PyNumber_Multiply(__pyx_t_3, __pyx_t_19); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21129  __Pyx_GOTREF(__pyx_t_11);
21130  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21131  __Pyx_DECREF(__pyx_t_19); __pyx_t_19 = 0;
21132  __pyx_t_19 = PyInt_FromSsize_t(__pyx_v_ii); if (unlikely(!__pyx_t_19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21133  __Pyx_GOTREF(__pyx_t_19);
21134  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21135  __Pyx_GOTREF(__pyx_t_3);
21136  __Pyx_GIVEREF(__pyx_t_19);
21137  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_19);
21138  __Pyx_INCREF(__pyx_slice__122);
21139  __Pyx_GIVEREF(__pyx_slice__122);
21140  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_slice__122);
21141  __pyx_t_19 = 0;
21142  if (unlikely(PyObject_SetItem(__pyx_v_kDir, __pyx_t_3, __pyx_t_11) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21143  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
21144  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21145  }
21146 
21147  /* "WaveTools.pyx":993
21148  * for ii in range(len(ki)):
21149  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21150  * decomp.append(kDir) # <<<<<<<<<<<<<<
21151  * decomp.append(ki)
21152  *
21153  */
21154  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_kDir); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 993; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21155 
21156  /* "WaveTools.pyx":994
21157  * kDir[ii,:] = ki[ii]*self.waveDir[:]
21158  * decomp.append(kDir)
21159  * decomp.append(ki) # <<<<<<<<<<<<<<
21160  *
21161  * self.decompose_window.append(decomp)
21162  */
21163  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_v_decomp, __pyx_v_ki); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 994; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21164 
21165  /* "WaveTools.pyx":996
21166  * decomp.append(ki)
21167  *
21168  * self.decompose_window.append(decomp) # <<<<<<<<<<<<<<
21169  *
21170  *
21171  */
21172  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21173  __Pyx_GOTREF(__pyx_t_11);
21174  __pyx_t_17 = __Pyx_PyObject_Append(__pyx_t_11, __pyx_v_decomp); if (unlikely(__pyx_t_17 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 996; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21175  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
21176 
21177  /* "WaveTools.pyx":969
21178  * # ii = 0
21179  *
21180  * for wind in self.windows_rec: # <<<<<<<<<<<<<<
21181  * self.nfft=len(wind[:,0])
21182  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
21183  */
21184  }
21185  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21186  }
21187  __pyx_L13:;
21188 
21189  /* "WaveTools.pyx":761
21190  * """
21191  *
21192  * def __init__(self, # <<<<<<<<<<<<<<
21193  * timeSeriesFile, # e.g.= "Timeseries.txt",
21194  * skiprows,
21195  */
21196 
21197  /* function exit code */
21198  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
21199  goto __pyx_L0;
21200  __pyx_L1_error:;
21201  __Pyx_XDECREF(__pyx_t_3);
21202  __Pyx_XDECREF(__pyx_t_4);
21203  __Pyx_XDECREF(__pyx_t_5);
21204  __Pyx_XDECREF(__pyx_t_6);
21205  __Pyx_XDECREF(__pyx_t_7);
21206  __Pyx_XDECREF(__pyx_t_8);
21207  __Pyx_XDECREF(__pyx_t_11);
21208  __Pyx_XDECREF(__pyx_t_18);
21209  __Pyx_XDECREF(__pyx_t_19);
21210  __Pyx_AddTraceback("WaveTools.TimeSeries.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
21211  __pyx_r = NULL;
21212  __pyx_L0:;
21213  __Pyx_XDECREF(__pyx_v_filetype);
21214  __Pyx_XDECREF(__pyx_v_fid);
21215  __Pyx_XDECREF(__pyx_v_tdata);
21216  __Pyx_XDECREF(__pyx_v_time_temp);
21217  __Pyx_XDECREF(__pyx_v_i);
21218  __Pyx_XDECREF(__pyx_v_dt_temp);
21219  __Pyx_XDECREF(__pyx_v_Nf);
21220  __Pyx_XDECREF(__pyx_v_ipeak);
21221  __Pyx_XDECREF(__pyx_v_imax);
21222  __Pyx_XDECREF(__pyx_v_imin);
21223  __Pyx_XDECREF(__pyx_v_validWindows);
21224  __Pyx_XDECREF(__pyx_v_wind_filt);
21225  __Pyx_XDECREF(__pyx_v_diff);
21226  __Pyx_XDECREF(__pyx_v_jj);
21227  __Pyx_XDECREF(__pyx_v_span);
21228  __Pyx_XDECREF(__pyx_v_tfirst);
21229  __Pyx_XDECREF(__pyx_v_tlast);
21230  __Pyx_XDECREF(__pyx_v_ispan1);
21231  __Pyx_XDECREF(__pyx_v_ispan2);
21232  __Pyx_XDECREF(__pyx_v_tstart);
21233  __Pyx_XDECREF(__pyx_v_wind);
21234  __Pyx_XDECREF(__pyx_v_decomp);
21235  __Pyx_XDECREF(__pyx_v_Nftemp);
21236  __Pyx_XDECREF(__pyx_v_ki);
21237  __Pyx_XDECREF(__pyx_v_kDir);
21238  __Pyx_XGIVEREF(__pyx_r);
21239  __Pyx_RefNannyFinishContext();
21240  return __pyx_r;
21241 }
21242 
21243 /* "WaveTools.pyx":1014
21244  * # self.Noverlap = int(self.Npw *0.25)
21245  *
21246  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
21247  * """Free surface displacement
21248  * :param x: floating point x coordinate
21249  */
21250 
21251 /* Python wrapper */
21252 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3etaDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21253 static char __pyx_doc_9WaveTools_10TimeSeries_2etaDirect[] = "TimeSeries.etaDirect(self, x, t)\nFree surface displacement\n :param x: floating point x coordinate\n :param t: time";
21254 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_3etaDirect = {"etaDirect", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_3etaDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_2etaDirect};
21255 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_3etaDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21256  PyObject *__pyx_v_self = 0;
21257  PyObject *__pyx_v_x = 0;
21258  PyObject *__pyx_v_t = 0;
21259  int __pyx_lineno = 0;
21260  const char *__pyx_filename = NULL;
21261  int __pyx_clineno = 0;
21262  PyObject *__pyx_r = 0;
21263  __Pyx_RefNannyDeclarations
21264  __Pyx_RefNannySetupContext("etaDirect (wrapper)", 0);
21265  {
21266  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
21267  PyObject* values[3] = {0,0,0};
21268  if (unlikely(__pyx_kwds)) {
21269  Py_ssize_t kw_args;
21270  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21271  switch (pos_args) {
21272  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21273  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21274  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21275  case 0: break;
21276  default: goto __pyx_L5_argtuple_error;
21277  }
21278  kw_args = PyDict_Size(__pyx_kwds);
21279  switch (pos_args) {
21280  case 0:
21281  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
21282  else goto __pyx_L5_argtuple_error;
21283  case 1:
21284  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
21285  else {
21286  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21287  }
21288  case 2:
21289  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
21290  else {
21291  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21292  }
21293  }
21294  if (unlikely(kw_args > 0)) {
21295  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaDirect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21296  }
21297  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
21298  goto __pyx_L5_argtuple_error;
21299  } else {
21300  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21301  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21302  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21303  }
21304  __pyx_v_self = values[0];
21305  __pyx_v_x = values[1];
21306  __pyx_v_t = values[2];
21307  }
21308  goto __pyx_L4_argument_unpacking_done;
21309  __pyx_L5_argtuple_error:;
21310  __Pyx_RaiseArgtupleInvalid("etaDirect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21311  __pyx_L3_error:;
21312  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21313  __Pyx_RefNannyFinishContext();
21314  return NULL;
21315  __pyx_L4_argument_unpacking_done:;
21316  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_2etaDirect(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
21317 
21318  /* function exit code */
21319  __Pyx_RefNannyFinishContext();
21320  return __pyx_r;
21321 }
21322 
21323 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_2etaDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
21324  PyObject *__pyx_v_Eta = NULL;
21325  PyObject *__pyx_v_ii = NULL;
21326  PyObject *__pyx_v_x1 = NULL;
21327  PyObject *__pyx_r = NULL;
21328  __Pyx_RefNannyDeclarations
21329  PyObject *__pyx_t_1 = NULL;
21330  PyObject *__pyx_t_2 = NULL;
21331  Py_ssize_t __pyx_t_3;
21332  PyObject *(*__pyx_t_4)(PyObject *);
21333  PyObject *__pyx_t_5 = NULL;
21334  PyObject *__pyx_t_6 = NULL;
21335  PyObject *__pyx_t_7 = NULL;
21336  PyObject *__pyx_t_8 = NULL;
21337  PyObject *__pyx_t_9 = NULL;
21338  PyObject *__pyx_t_10 = NULL;
21339  PyObject *__pyx_t_11 = NULL;
21340  Py_ssize_t __pyx_t_12;
21341  PyObject *__pyx_t_13 = NULL;
21342  int __pyx_lineno = 0;
21343  const char *__pyx_filename = NULL;
21344  int __pyx_clineno = 0;
21345  __Pyx_RefNannySetupContext("etaDirect", 0);
21346 
21347  /* "WaveTools.pyx":1018
21348  * :param x: floating point x coordinate
21349  * :param t: time"""
21350  * Eta=0. # <<<<<<<<<<<<<<
21351  * for ii in range(0,self.Nf):
21352  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21353  */
21354  __Pyx_INCREF(__pyx_float_0_);
21355  __pyx_v_Eta = __pyx_float_0_;
21356 
21357  /* "WaveTools.pyx":1019
21358  * :param t: time"""
21359  * Eta=0.
21360  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21361  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21362  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21363  */
21364  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21365  __Pyx_GOTREF(__pyx_t_1);
21366  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21367  __Pyx_GOTREF(__pyx_t_2);
21368  __Pyx_INCREF(__pyx_int_0);
21369  __Pyx_GIVEREF(__pyx_int_0);
21370  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
21371  __Pyx_GIVEREF(__pyx_t_1);
21372  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
21373  __pyx_t_1 = 0;
21374  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21375  __Pyx_GOTREF(__pyx_t_1);
21376  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21377  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
21378  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
21379  __pyx_t_4 = NULL;
21380  } else {
21381  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21382  __Pyx_GOTREF(__pyx_t_2);
21383  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21384  }
21385  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21386  for (;;) {
21387  if (likely(!__pyx_t_4)) {
21388  if (likely(PyList_CheckExact(__pyx_t_2))) {
21389  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
21390  #if CYTHON_COMPILING_IN_CPYTHON
21391  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21392  #else
21393  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21394  __Pyx_GOTREF(__pyx_t_1);
21395  #endif
21396  } else {
21397  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
21398  #if CYTHON_COMPILING_IN_CPYTHON
21399  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21400  #else
21401  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21402  __Pyx_GOTREF(__pyx_t_1);
21403  #endif
21404  }
21405  } else {
21406  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
21407  if (unlikely(!__pyx_t_1)) {
21408  PyObject* exc_type = PyErr_Occurred();
21409  if (exc_type) {
21410  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21411  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21412  }
21413  break;
21414  }
21415  __Pyx_GOTREF(__pyx_t_1);
21416  }
21417  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
21418  __pyx_t_1 = 0;
21419 
21420  /* "WaveTools.pyx":1020
21421  * Eta=0.
21422  * for ii in range(0,self.Nf):
21423  * x1 = np.array(x)-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
21424  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21425  * return Eta
21426  */
21427  __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21428  __Pyx_GOTREF(__pyx_t_5);
21429  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_array); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21430  __Pyx_GOTREF(__pyx_t_6);
21431  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21432  __pyx_t_5 = NULL;
21433  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_6))) {
21434  __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6);
21435  if (likely(__pyx_t_5)) {
21436  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
21437  __Pyx_INCREF(__pyx_t_5);
21438  __Pyx_INCREF(function);
21439  __Pyx_DECREF_SET(__pyx_t_6, function);
21440  }
21441  }
21442  if (!__pyx_t_5) {
21443  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21444  __Pyx_GOTREF(__pyx_t_1);
21445  } else {
21446  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21447  __Pyx_GOTREF(__pyx_t_7);
21448  __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
21449  __Pyx_INCREF(__pyx_v_x);
21450  __Pyx_GIVEREF(__pyx_v_x);
21451  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_x);
21452  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21453  __Pyx_GOTREF(__pyx_t_1);
21454  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21455  }
21456  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21457  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21458  __Pyx_GOTREF(__pyx_t_6);
21459  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21460  __Pyx_GOTREF(__pyx_t_7);
21461  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21462  __Pyx_GOTREF(__pyx_t_5);
21463  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21464  __Pyx_GOTREF(__pyx_t_8);
21465  __Pyx_GIVEREF(__pyx_t_6);
21466  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
21467  __Pyx_GIVEREF(__pyx_t_7);
21468  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
21469  __Pyx_GIVEREF(__pyx_t_5);
21470  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_5);
21471  __pyx_t_6 = 0;
21472  __pyx_t_7 = 0;
21473  __pyx_t_5 = 0;
21474  __pyx_t_5 = PyNumber_Subtract(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1020; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21475  __Pyx_GOTREF(__pyx_t_5);
21476  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21477  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21478  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_5);
21479  __pyx_t_5 = 0;
21480 
21481  /* "WaveTools.pyx":1021
21482  * for ii in range(0,self.Nf):
21483  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21484  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii]) # <<<<<<<<<<<<<<
21485  * return Eta
21486  *
21487  */
21488  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21489  __Pyx_GOTREF(__pyx_t_8);
21490  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_t0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21491  __Pyx_GOTREF(__pyx_t_1);
21492  __pyx_t_7 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21493  __Pyx_GOTREF(__pyx_t_7);
21494  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21495  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21496  __Pyx_GOTREF(__pyx_t_1);
21497  __pyx_t_6 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21498  __Pyx_GOTREF(__pyx_t_6);
21499  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21500  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21501  __Pyx_GOTREF(__pyx_t_1);
21502  __pyx_t_9 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21503  __Pyx_GOTREF(__pyx_t_9);
21504  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21505  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21506  __Pyx_GOTREF(__pyx_t_1);
21507  __pyx_t_10 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21508  __Pyx_GOTREF(__pyx_t_10);
21509  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21510  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21511  __Pyx_GOTREF(__pyx_t_1);
21512  __pyx_t_11 = PyObject_GetItem(__pyx_t_1, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21513  __Pyx_GOTREF(__pyx_t_11);
21514  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21515  __pyx_t_1 = NULL;
21516  __pyx_t_12 = 0;
21517  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
21518  __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
21519  if (likely(__pyx_t_1)) {
21520  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
21521  __Pyx_INCREF(__pyx_t_1);
21522  __Pyx_INCREF(function);
21523  __Pyx_DECREF_SET(__pyx_t_8, function);
21524  __pyx_t_12 = 1;
21525  }
21526  }
21527  __pyx_t_13 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21528  __Pyx_GOTREF(__pyx_t_13);
21529  if (__pyx_t_1) {
21530  __Pyx_GIVEREF(__pyx_t_1); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_1); __pyx_t_1 = NULL;
21531  }
21532  __Pyx_INCREF(__pyx_v_x1);
21533  __Pyx_GIVEREF(__pyx_v_x1);
21534  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_x1);
21535  __Pyx_GIVEREF(__pyx_t_7);
21536  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_7);
21537  __Pyx_GIVEREF(__pyx_t_6);
21538  PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_6);
21539  __Pyx_GIVEREF(__pyx_t_9);
21540  PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_9);
21541  __Pyx_GIVEREF(__pyx_t_10);
21542  PyTuple_SET_ITEM(__pyx_t_13, 4+__pyx_t_12, __pyx_t_10);
21543  __Pyx_GIVEREF(__pyx_t_11);
21544  PyTuple_SET_ITEM(__pyx_t_13, 5+__pyx_t_12, __pyx_t_11);
21545  __pyx_t_7 = 0;
21546  __pyx_t_6 = 0;
21547  __pyx_t_9 = 0;
21548  __pyx_t_10 = 0;
21549  __pyx_t_11 = 0;
21550  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21551  __Pyx_GOTREF(__pyx_t_5);
21552  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
21553  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
21554  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21555  __Pyx_GOTREF(__pyx_t_8);
21556  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21557  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_8);
21558  __pyx_t_8 = 0;
21559 
21560  /* "WaveTools.pyx":1019
21561  * :param t: time"""
21562  * Eta=0.
21563  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21564  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21565  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21566  */
21567  }
21568  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21569 
21570  /* "WaveTools.pyx":1022
21571  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
21572  * Eta+= eta_mode(x1,t-self.t0,self.kDir[ii],self.omega[ii],self.phi[ii],self.ai[ii])
21573  * return Eta # <<<<<<<<<<<<<<
21574  *
21575  * def uDirect(self, x, t):
21576  */
21577  __Pyx_XDECREF(__pyx_r);
21578  __Pyx_INCREF(__pyx_v_Eta);
21579  __pyx_r = __pyx_v_Eta;
21580  goto __pyx_L0;
21581 
21582  /* "WaveTools.pyx":1014
21583  * # self.Noverlap = int(self.Npw *0.25)
21584  *
21585  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
21586  * """Free surface displacement
21587  * :param x: floating point x coordinate
21588  */
21589 
21590  /* function exit code */
21591  __pyx_L1_error:;
21592  __Pyx_XDECREF(__pyx_t_1);
21593  __Pyx_XDECREF(__pyx_t_2);
21594  __Pyx_XDECREF(__pyx_t_5);
21595  __Pyx_XDECREF(__pyx_t_6);
21596  __Pyx_XDECREF(__pyx_t_7);
21597  __Pyx_XDECREF(__pyx_t_8);
21598  __Pyx_XDECREF(__pyx_t_9);
21599  __Pyx_XDECREF(__pyx_t_10);
21600  __Pyx_XDECREF(__pyx_t_11);
21601  __Pyx_XDECREF(__pyx_t_13);
21602  __Pyx_AddTraceback("WaveTools.TimeSeries.etaDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21603  __pyx_r = NULL;
21604  __pyx_L0:;
21605  __Pyx_XDECREF(__pyx_v_Eta);
21606  __Pyx_XDECREF(__pyx_v_ii);
21607  __Pyx_XDECREF(__pyx_v_x1);
21608  __Pyx_XGIVEREF(__pyx_r);
21609  __Pyx_RefNannyFinishContext();
21610  return __pyx_r;
21611 }
21612 
21613 /* "WaveTools.pyx":1024
21614  * return Eta
21615  *
21616  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
21617  * """x-component of velocity
21618  *
21619  */
21620 
21621 /* Python wrapper */
21622 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5uDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
21623 static char __pyx_doc_9WaveTools_10TimeSeries_4uDirect[] = "TimeSeries.uDirect(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
21624 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_5uDirect = {"uDirect", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_5uDirect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_4uDirect};
21625 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_5uDirect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
21626  PyObject *__pyx_v_self = 0;
21627  PyObject *__pyx_v_x = 0;
21628  PyObject *__pyx_v_t = 0;
21629  int __pyx_lineno = 0;
21630  const char *__pyx_filename = NULL;
21631  int __pyx_clineno = 0;
21632  PyObject *__pyx_r = 0;
21633  __Pyx_RefNannyDeclarations
21634  __Pyx_RefNannySetupContext("uDirect (wrapper)", 0);
21635  {
21636  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
21637  PyObject* values[3] = {0,0,0};
21638  if (unlikely(__pyx_kwds)) {
21639  Py_ssize_t kw_args;
21640  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
21641  switch (pos_args) {
21642  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21643  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21644  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21645  case 0: break;
21646  default: goto __pyx_L5_argtuple_error;
21647  }
21648  kw_args = PyDict_Size(__pyx_kwds);
21649  switch (pos_args) {
21650  case 0:
21651  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
21652  else goto __pyx_L5_argtuple_error;
21653  case 1:
21654  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
21655  else {
21656  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21657  }
21658  case 2:
21659  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
21660  else {
21661  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21662  }
21663  }
21664  if (unlikely(kw_args > 0)) {
21665  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uDirect") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21666  }
21667  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
21668  goto __pyx_L5_argtuple_error;
21669  } else {
21670  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
21671  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
21672  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
21673  }
21674  __pyx_v_self = values[0];
21675  __pyx_v_x = values[1];
21676  __pyx_v_t = values[2];
21677  }
21678  goto __pyx_L4_argument_unpacking_done;
21679  __pyx_L5_argtuple_error:;
21680  __Pyx_RaiseArgtupleInvalid("uDirect", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
21681  __pyx_L3_error:;
21682  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21683  __Pyx_RefNannyFinishContext();
21684  return NULL;
21685  __pyx_L4_argument_unpacking_done:;
21686  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_4uDirect(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
21687 
21688  /* function exit code */
21689  __Pyx_RefNannyFinishContext();
21690  return __pyx_r;
21691 }
21692 
21693 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_4uDirect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
21694  PyObject *__pyx_v_U = NULL;
21695  PyObject *__pyx_v_ii = NULL;
21696  PyObject *__pyx_v_x1 = NULL;
21697  PyObject *__pyx_r = NULL;
21698  __Pyx_RefNannyDeclarations
21699  PyObject *__pyx_t_1 = NULL;
21700  PyObject *__pyx_t_2 = NULL;
21701  Py_ssize_t __pyx_t_3;
21702  PyObject *(*__pyx_t_4)(PyObject *);
21703  PyObject *__pyx_t_5 = NULL;
21704  PyObject *__pyx_t_6 = NULL;
21705  PyObject *__pyx_t_7 = NULL;
21706  PyObject *__pyx_t_8 = NULL;
21707  PyObject *__pyx_t_9 = NULL;
21708  PyObject *__pyx_t_10 = NULL;
21709  PyObject *__pyx_t_11 = NULL;
21710  PyObject *__pyx_t_12 = NULL;
21711  PyObject *__pyx_t_13 = NULL;
21712  PyObject *__pyx_t_14 = NULL;
21713  PyObject *__pyx_t_15 = NULL;
21714  PyObject *__pyx_t_16 = NULL;
21715  Py_ssize_t __pyx_t_17;
21716  PyObject *__pyx_t_18 = NULL;
21717  int __pyx_lineno = 0;
21718  const char *__pyx_filename = NULL;
21719  int __pyx_clineno = 0;
21720  __Pyx_RefNannySetupContext("uDirect", 0);
21721 
21722  /* "WaveTools.pyx":1031
21723  * :param t: time
21724  * """
21725  * U=0. # <<<<<<<<<<<<<<
21726  * for ii in range(0,self.Nf):
21727  * x1 = x-[self.x0, self.y0, self.z0]
21728  */
21729  __Pyx_INCREF(__pyx_float_0_);
21730  __pyx_v_U = __pyx_float_0_;
21731 
21732  /* "WaveTools.pyx":1032
21733  * """
21734  * U=0.
21735  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21736  * x1 = x-[self.x0, self.y0, self.z0]
21737  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21738  */
21739  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21740  __Pyx_GOTREF(__pyx_t_1);
21741  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21742  __Pyx_GOTREF(__pyx_t_2);
21743  __Pyx_INCREF(__pyx_int_0);
21744  __Pyx_GIVEREF(__pyx_int_0);
21745  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
21746  __Pyx_GIVEREF(__pyx_t_1);
21747  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
21748  __pyx_t_1 = 0;
21749  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21750  __Pyx_GOTREF(__pyx_t_1);
21751  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21752  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
21753  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
21754  __pyx_t_4 = NULL;
21755  } else {
21756  __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21757  __Pyx_GOTREF(__pyx_t_2);
21758  __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21759  }
21760  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
21761  for (;;) {
21762  if (likely(!__pyx_t_4)) {
21763  if (likely(PyList_CheckExact(__pyx_t_2))) {
21764  if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
21765  #if CYTHON_COMPILING_IN_CPYTHON
21766  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21767  #else
21768  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21769  __Pyx_GOTREF(__pyx_t_1);
21770  #endif
21771  } else {
21772  if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
21773  #if CYTHON_COMPILING_IN_CPYTHON
21774  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_1); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21775  #else
21776  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21777  __Pyx_GOTREF(__pyx_t_1);
21778  #endif
21779  }
21780  } else {
21781  __pyx_t_1 = __pyx_t_4(__pyx_t_2);
21782  if (unlikely(!__pyx_t_1)) {
21783  PyObject* exc_type = PyErr_Occurred();
21784  if (exc_type) {
21785  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
21786  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21787  }
21788  break;
21789  }
21790  __Pyx_GOTREF(__pyx_t_1);
21791  }
21792  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
21793  __pyx_t_1 = 0;
21794 
21795  /* "WaveTools.pyx":1033
21796  * U=0.
21797  * for ii in range(0,self.Nf):
21798  * x1 = x-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
21799  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21800  * return U
21801  */
21802  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21803  __Pyx_GOTREF(__pyx_t_1);
21804  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21805  __Pyx_GOTREF(__pyx_t_5);
21806  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21807  __Pyx_GOTREF(__pyx_t_6);
21808  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21809  __Pyx_GOTREF(__pyx_t_7);
21810  __Pyx_GIVEREF(__pyx_t_1);
21811  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
21812  __Pyx_GIVEREF(__pyx_t_5);
21813  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_5);
21814  __Pyx_GIVEREF(__pyx_t_6);
21815  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_6);
21816  __pyx_t_1 = 0;
21817  __pyx_t_5 = 0;
21818  __pyx_t_6 = 0;
21819  __pyx_t_6 = PyNumber_Subtract(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1033; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21820  __Pyx_GOTREF(__pyx_t_6);
21821  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21822  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_6);
21823  __pyx_t_6 = 0;
21824 
21825  /* "WaveTools.pyx":1034
21826  * for ii in range(0,self.Nf):
21827  * x1 = x-[self.x0, self.y0, self.z0]
21828  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
21829  * return U
21830  *
21831  */
21832  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21833  __Pyx_GOTREF(__pyx_t_7);
21834  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_t0); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21835  __Pyx_GOTREF(__pyx_t_5);
21836  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21837  __Pyx_GOTREF(__pyx_t_1);
21838  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21839  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_kDir); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21840  __Pyx_GOTREF(__pyx_t_5);
21841  __pyx_t_8 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21842  __Pyx_GOTREF(__pyx_t_8);
21843  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21844  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ki); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21845  __Pyx_GOTREF(__pyx_t_5);
21846  __pyx_t_9 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21847  __Pyx_GOTREF(__pyx_t_9);
21848  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21849  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_omega); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21850  __Pyx_GOTREF(__pyx_t_5);
21851  __pyx_t_10 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21852  __Pyx_GOTREF(__pyx_t_10);
21853  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21854  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_phi); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21855  __Pyx_GOTREF(__pyx_t_5);
21856  __pyx_t_11 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21857  __Pyx_GOTREF(__pyx_t_11);
21858  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21859  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_ai); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21860  __Pyx_GOTREF(__pyx_t_5);
21861  __pyx_t_12 = PyObject_GetItem(__pyx_t_5, __pyx_v_ii); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
21862  __Pyx_GOTREF(__pyx_t_12);
21863  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
21864  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21865  __Pyx_GOTREF(__pyx_t_5);
21866  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21867  __Pyx_GOTREF(__pyx_t_13);
21868  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21869  __Pyx_GOTREF(__pyx_t_14);
21870  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21871  __Pyx_GOTREF(__pyx_t_15);
21872  __pyx_t_16 = NULL;
21873  __pyx_t_17 = 0;
21874  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
21875  __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_7);
21876  if (likely(__pyx_t_16)) {
21877  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
21878  __Pyx_INCREF(__pyx_t_16);
21879  __Pyx_INCREF(function);
21880  __Pyx_DECREF_SET(__pyx_t_7, function);
21881  __pyx_t_17 = 1;
21882  }
21883  }
21884  __pyx_t_18 = PyTuple_New(11+__pyx_t_17); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21885  __Pyx_GOTREF(__pyx_t_18);
21886  if (__pyx_t_16) {
21887  __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL;
21888  }
21889  __Pyx_INCREF(__pyx_v_x1);
21890  __Pyx_GIVEREF(__pyx_v_x1);
21891  PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_x1);
21892  __Pyx_GIVEREF(__pyx_t_1);
21893  PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_1);
21894  __Pyx_GIVEREF(__pyx_t_8);
21895  PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_t_8);
21896  __Pyx_GIVEREF(__pyx_t_9);
21897  PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_17, __pyx_t_9);
21898  __Pyx_GIVEREF(__pyx_t_10);
21899  PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_17, __pyx_t_10);
21900  __Pyx_GIVEREF(__pyx_t_11);
21901  PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_17, __pyx_t_11);
21902  __Pyx_GIVEREF(__pyx_t_12);
21903  PyTuple_SET_ITEM(__pyx_t_18, 6+__pyx_t_17, __pyx_t_12);
21904  __Pyx_GIVEREF(__pyx_t_5);
21905  PyTuple_SET_ITEM(__pyx_t_18, 7+__pyx_t_17, __pyx_t_5);
21906  __Pyx_GIVEREF(__pyx_t_13);
21907  PyTuple_SET_ITEM(__pyx_t_18, 8+__pyx_t_17, __pyx_t_13);
21908  __Pyx_GIVEREF(__pyx_t_14);
21909  PyTuple_SET_ITEM(__pyx_t_18, 9+__pyx_t_17, __pyx_t_14);
21910  __Pyx_GIVEREF(__pyx_t_15);
21911  PyTuple_SET_ITEM(__pyx_t_18, 10+__pyx_t_17, __pyx_t_15);
21912  __pyx_t_1 = 0;
21913  __pyx_t_8 = 0;
21914  __pyx_t_9 = 0;
21915  __pyx_t_10 = 0;
21916  __pyx_t_11 = 0;
21917  __pyx_t_12 = 0;
21918  __pyx_t_5 = 0;
21919  __pyx_t_13 = 0;
21920  __pyx_t_14 = 0;
21921  __pyx_t_15 = 0;
21922  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_18, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21923  __Pyx_GOTREF(__pyx_t_6);
21924  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
21925  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
21926  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
21927  __Pyx_GOTREF(__pyx_t_7);
21928  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
21929  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_7);
21930  __pyx_t_7 = 0;
21931 
21932  /* "WaveTools.pyx":1032
21933  * """
21934  * U=0.
21935  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
21936  * x1 = x-[self.x0, self.y0, self.z0]
21937  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21938  */
21939  }
21940  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
21941 
21942  /* "WaveTools.pyx":1035
21943  * x1 = x-[self.x0, self.y0, self.z0]
21944  * U+= vel_mode(x1, t-self.t0, self.kDir[ii],self.ki[ii], self.omega[ii],self.phi[ii],self.ai[ii],self.mwl,self.depth,self.g,self.vDir)
21945  * return U # <<<<<<<<<<<<<<
21946  *
21947  * def findWindow(self,t):
21948  */
21949  __Pyx_XDECREF(__pyx_r);
21950  __Pyx_INCREF(__pyx_v_U);
21951  __pyx_r = __pyx_v_U;
21952  goto __pyx_L0;
21953 
21954  /* "WaveTools.pyx":1024
21955  * return Eta
21956  *
21957  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
21958  * """x-component of velocity
21959  *
21960  */
21961 
21962  /* function exit code */
21963  __pyx_L1_error:;
21964  __Pyx_XDECREF(__pyx_t_1);
21965  __Pyx_XDECREF(__pyx_t_2);
21966  __Pyx_XDECREF(__pyx_t_5);
21967  __Pyx_XDECREF(__pyx_t_6);
21968  __Pyx_XDECREF(__pyx_t_7);
21969  __Pyx_XDECREF(__pyx_t_8);
21970  __Pyx_XDECREF(__pyx_t_9);
21971  __Pyx_XDECREF(__pyx_t_10);
21972  __Pyx_XDECREF(__pyx_t_11);
21973  __Pyx_XDECREF(__pyx_t_12);
21974  __Pyx_XDECREF(__pyx_t_13);
21975  __Pyx_XDECREF(__pyx_t_14);
21976  __Pyx_XDECREF(__pyx_t_15);
21977  __Pyx_XDECREF(__pyx_t_16);
21978  __Pyx_XDECREF(__pyx_t_18);
21979  __Pyx_AddTraceback("WaveTools.TimeSeries.uDirect", __pyx_clineno, __pyx_lineno, __pyx_filename);
21980  __pyx_r = NULL;
21981  __pyx_L0:;
21982  __Pyx_XDECREF(__pyx_v_U);
21983  __Pyx_XDECREF(__pyx_v_ii);
21984  __Pyx_XDECREF(__pyx_v_x1);
21985  __Pyx_XGIVEREF(__pyx_r);
21986  __Pyx_RefNannyFinishContext();
21987  return __pyx_r;
21988 }
21989 
21990 /* "WaveTools.pyx":1037
21991  * return U
21992  *
21993  * def findWindow(self,t): # <<<<<<<<<<<<<<
21994  * term = 1. - self.handover
21995  * if t-self.time[0] >= term*self.Twindow:
21996  */
21997 
21998 /* Python wrapper */
21999 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7findWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22000 static char __pyx_doc_9WaveTools_10TimeSeries_6findWindow[] = "TimeSeries.findWindow(self, t)";
22001 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_7findWindow = {"findWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_7findWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_6findWindow};
22002 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_7findWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22003  PyObject *__pyx_v_self = 0;
22004  PyObject *__pyx_v_t = 0;
22005  int __pyx_lineno = 0;
22006  const char *__pyx_filename = NULL;
22007  int __pyx_clineno = 0;
22008  PyObject *__pyx_r = 0;
22009  __Pyx_RefNannyDeclarations
22010  __Pyx_RefNannySetupContext("findWindow (wrapper)", 0);
22011  {
22012  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_t,0};
22013  PyObject* values[2] = {0,0};
22014  if (unlikely(__pyx_kwds)) {
22015  Py_ssize_t kw_args;
22016  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22017  switch (pos_args) {
22018  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22019  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22020  case 0: break;
22021  default: goto __pyx_L5_argtuple_error;
22022  }
22023  kw_args = PyDict_Size(__pyx_kwds);
22024  switch (pos_args) {
22025  case 0:
22026  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22027  else goto __pyx_L5_argtuple_error;
22028  case 1:
22029  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22030  else {
22031  __Pyx_RaiseArgtupleInvalid("findWindow", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22032  }
22033  }
22034  if (unlikely(kw_args > 0)) {
22035  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22036  }
22037  } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
22038  goto __pyx_L5_argtuple_error;
22039  } else {
22040  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22041  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22042  }
22043  __pyx_v_self = values[0];
22044  __pyx_v_t = values[1];
22045  }
22046  goto __pyx_L4_argument_unpacking_done;
22047  __pyx_L5_argtuple_error:;
22048  __Pyx_RaiseArgtupleInvalid("findWindow", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22049  __pyx_L3_error:;
22050  __Pyx_AddTraceback("WaveTools.TimeSeries.findWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22051  __Pyx_RefNannyFinishContext();
22052  return NULL;
22053  __pyx_L4_argument_unpacking_done:;
22054  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_6findWindow(__pyx_self, __pyx_v_self, __pyx_v_t);
22055 
22056  /* function exit code */
22057  __Pyx_RefNannyFinishContext();
22058  return __pyx_r;
22059 }
22060 
22061 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_6findWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_t) {
22062  PyObject *__pyx_v_term = NULL;
22063  PyObject *__pyx_v_Nw = NULL;
22064  PyObject *__pyx_r = NULL;
22065  __Pyx_RefNannyDeclarations
22066  PyObject *__pyx_t_1 = NULL;
22067  PyObject *__pyx_t_2 = NULL;
22068  PyObject *__pyx_t_3 = NULL;
22069  int __pyx_t_4;
22070  PyObject *__pyx_t_5 = NULL;
22071  PyObject *__pyx_t_6 = NULL;
22072  PyObject *__pyx_t_7 = NULL;
22073  int __pyx_lineno = 0;
22074  const char *__pyx_filename = NULL;
22075  int __pyx_clineno = 0;
22076  __Pyx_RefNannySetupContext("findWindow", 0);
22077 
22078  /* "WaveTools.pyx":1038
22079  *
22080  * def findWindow(self,t):
22081  * term = 1. - self.handover # <<<<<<<<<<<<<<
22082  * if t-self.time[0] >= term*self.Twindow:
22083  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22084  */
22085  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22086  __Pyx_GOTREF(__pyx_t_1);
22087  __pyx_t_2 = __Pyx_PyFloat_SubtractCObj(__pyx_float_1_, __pyx_t_1, 1., 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22088  __Pyx_GOTREF(__pyx_t_2);
22089  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22090  __pyx_v_term = __pyx_t_2;
22091  __pyx_t_2 = 0;
22092 
22093  /* "WaveTools.pyx":1039
22094  * def findWindow(self,t):
22095  * term = 1. - self.handover
22096  * if t-self.time[0] >= term*self.Twindow: # <<<<<<<<<<<<<<
22097  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22098  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22099  */
22100  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22101  __Pyx_GOTREF(__pyx_t_2);
22102  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22103  __Pyx_GOTREF(__pyx_t_1);
22104  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22105  __pyx_t_2 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22106  __Pyx_GOTREF(__pyx_t_2);
22107  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22108  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22109  __Pyx_GOTREF(__pyx_t_1);
22110  __pyx_t_3 = PyNumber_Multiply(__pyx_v_term, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22111  __Pyx_GOTREF(__pyx_t_3);
22112  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22113  __pyx_t_1 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22114  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22115  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22116  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22117  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22118  if (__pyx_t_4) {
22119 
22120  /* "WaveTools.pyx":1040
22121  * term = 1. - self.handover
22122  * if t-self.time[0] >= term*self.Twindow:
22123  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1) # <<<<<<<<<<<<<<
22124  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22125  * Nw-=1
22126  */
22127  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nwindows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22128  __Pyx_GOTREF(__pyx_t_1);
22129  __pyx_t_3 = __Pyx_PyInt_SubtractObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22130  __Pyx_GOTREF(__pyx_t_3);
22131  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22132  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22133  __Pyx_GOTREF(__pyx_t_1);
22134  __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_1, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22135  __Pyx_GOTREF(__pyx_t_2);
22136  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22137  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22138  __Pyx_GOTREF(__pyx_t_1);
22139  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22140  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22141  __Pyx_GOTREF(__pyx_t_2);
22142  __pyx_t_5 = PyNumber_Multiply(__pyx_v_term, __pyx_t_2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22143  __Pyx_GOTREF(__pyx_t_5);
22144  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22145  __pyx_t_2 = PyNumber_Subtract(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22146  __Pyx_GOTREF(__pyx_t_2);
22147  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22148  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22149  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22150  __Pyx_GOTREF(__pyx_t_5);
22151  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22152  __Pyx_GOTREF(__pyx_t_1);
22153  __pyx_t_6 = PyNumber_Multiply(__pyx_float_2_, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22154  __Pyx_GOTREF(__pyx_t_6);
22155  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22156  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Twindow); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22157  __Pyx_GOTREF(__pyx_t_1);
22158  __pyx_t_7 = PyNumber_Multiply(__pyx_t_6, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22159  __Pyx_GOTREF(__pyx_t_7);
22160  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
22161  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22162  __pyx_t_1 = PyNumber_Subtract(__pyx_t_5, __pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22163  __Pyx_GOTREF(__pyx_t_1);
22164  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
22165  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22166  __pyx_t_7 = __Pyx_PyNumber_Divide(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22167  __Pyx_GOTREF(__pyx_t_7);
22168  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22169  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22170  __pyx_t_1 = PyNumber_Int(__pyx_t_7); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22171  __Pyx_GOTREF(__pyx_t_1);
22172  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22173  __pyx_t_7 = __Pyx_PyInt_AddObjC(__pyx_t_1, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22174  __Pyx_GOTREF(__pyx_t_7);
22175  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22176  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22177  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22178  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22179  if (__pyx_t_4) {
22180  __Pyx_INCREF(__pyx_t_3);
22181  __pyx_t_1 = __pyx_t_3;
22182  } else {
22183  __Pyx_INCREF(__pyx_t_7);
22184  __pyx_t_1 = __pyx_t_7;
22185  }
22186  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22187  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22188  __pyx_t_3 = __pyx_t_1;
22189  __Pyx_INCREF(__pyx_t_3);
22190  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22191  __pyx_v_Nw = __pyx_t_3;
22192  __pyx_t_3 = 0;
22193 
22194  /* "WaveTools.pyx":1041
22195  * if t-self.time[0] >= term*self.Twindow:
22196  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22197  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]: # <<<<<<<<<<<<<<
22198  * Nw-=1
22199  * else:
22200  */
22201  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22202  __Pyx_GOTREF(__pyx_t_3);
22203  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_3, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22204  __Pyx_GOTREF(__pyx_t_1);
22205  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22206  __pyx_t_3 = PyNumber_Subtract(__pyx_v_t, __pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22207  __Pyx_GOTREF(__pyx_t_3);
22208  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22209  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_handover); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22210  __Pyx_GOTREF(__pyx_t_1);
22211  __pyx_t_7 = __Pyx_PyInt_SubtractObjC(__pyx_v_Nw, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22212  __Pyx_GOTREF(__pyx_t_7);
22213  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_t_7); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22214  __Pyx_GOTREF(__pyx_t_2);
22215  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22216  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22217  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_time); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22218  __Pyx_GOTREF(__pyx_t_7);
22219  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_7, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22220  __Pyx_GOTREF(__pyx_t_1);
22221  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22222  __pyx_t_7 = PyNumber_Subtract(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22223  __Pyx_GOTREF(__pyx_t_7);
22224  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22225  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22226  __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22227  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22228  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22229  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1041; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22230  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22231  if (__pyx_t_4) {
22232 
22233  /* "WaveTools.pyx":1042
22234  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22235  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22236  * Nw-=1 # <<<<<<<<<<<<<<
22237  * else:
22238  * Nw = 0
22239  */
22240  __pyx_t_1 = __Pyx_PyInt_SubtractObjC(__pyx_v_Nw, __pyx_int_1, 1, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1042; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22241  __Pyx_GOTREF(__pyx_t_1);
22242  __Pyx_DECREF_SET(__pyx_v_Nw, __pyx_t_1);
22243  __pyx_t_1 = 0;
22244 
22245  /* "WaveTools.pyx":1041
22246  * if t-self.time[0] >= term*self.Twindow:
22247  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22248  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]: # <<<<<<<<<<<<<<
22249  * Nw-=1
22250  * else:
22251  */
22252  }
22253 
22254  /* "WaveTools.pyx":1039
22255  * def findWindow(self,t):
22256  * term = 1. - self.handover
22257  * if t-self.time[0] >= term*self.Twindow: # <<<<<<<<<<<<<<
22258  * Nw = min(int((t-self.time[0] - term*self.Twindow)/(self.Twindow - 2. * self.handover * self.Twindow)) + 1, self.Nwindows-1)
22259  * if t-self.time[0] < self.windows_handover[Nw-1] - self.time[0]:
22260  */
22261  goto __pyx_L3;
22262  }
22263 
22264  /* "WaveTools.pyx":1044
22265  * Nw-=1
22266  * else:
22267  * Nw = 0 # <<<<<<<<<<<<<<
22268  * return Nw
22269  *
22270  */
22271  /*else*/ {
22272  __Pyx_INCREF(__pyx_int_0);
22273  __pyx_v_Nw = __pyx_int_0;
22274  }
22275  __pyx_L3:;
22276 
22277  /* "WaveTools.pyx":1045
22278  * else:
22279  * Nw = 0
22280  * return Nw # <<<<<<<<<<<<<<
22281  *
22282  * def etaWindow(self, x, t):
22283  */
22284  __Pyx_XDECREF(__pyx_r);
22285  __Pyx_INCREF(__pyx_v_Nw);
22286  __pyx_r = __pyx_v_Nw;
22287  goto __pyx_L0;
22288 
22289  /* "WaveTools.pyx":1037
22290  * return U
22291  *
22292  * def findWindow(self,t): # <<<<<<<<<<<<<<
22293  * term = 1. - self.handover
22294  * if t-self.time[0] >= term*self.Twindow:
22295  */
22296 
22297  /* function exit code */
22298  __pyx_L1_error:;
22299  __Pyx_XDECREF(__pyx_t_1);
22300  __Pyx_XDECREF(__pyx_t_2);
22301  __Pyx_XDECREF(__pyx_t_3);
22302  __Pyx_XDECREF(__pyx_t_5);
22303  __Pyx_XDECREF(__pyx_t_6);
22304  __Pyx_XDECREF(__pyx_t_7);
22305  __Pyx_AddTraceback("WaveTools.TimeSeries.findWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22306  __pyx_r = NULL;
22307  __pyx_L0:;
22308  __Pyx_XDECREF(__pyx_v_term);
22309  __Pyx_XDECREF(__pyx_v_Nw);
22310  __Pyx_XGIVEREF(__pyx_r);
22311  __Pyx_RefNannyFinishContext();
22312  return __pyx_r;
22313 }
22314 
22315 /* "WaveTools.pyx":1047
22316  * return Nw
22317  *
22318  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
22319  * """Free surface displacement
22320  * :param x: floating point x coordinate
22321  */
22322 
22323 /* Python wrapper */
22324 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9etaWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22325 static char __pyx_doc_9WaveTools_10TimeSeries_8etaWindow[] = "TimeSeries.etaWindow(self, x, t)\nFree surface displacement\n :param x: floating point x coordinate\n :param t: time";
22326 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_9etaWindow = {"etaWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_9etaWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_8etaWindow};
22327 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_9etaWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22328  PyObject *__pyx_v_self = 0;
22329  PyObject *__pyx_v_x = 0;
22330  PyObject *__pyx_v_t = 0;
22331  int __pyx_lineno = 0;
22332  const char *__pyx_filename = NULL;
22333  int __pyx_clineno = 0;
22334  PyObject *__pyx_r = 0;
22335  __Pyx_RefNannyDeclarations
22336  __Pyx_RefNannySetupContext("etaWindow (wrapper)", 0);
22337  {
22338  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
22339  PyObject* values[3] = {0,0,0};
22340  if (unlikely(__pyx_kwds)) {
22341  Py_ssize_t kw_args;
22342  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22343  switch (pos_args) {
22344  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22345  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22346  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22347  case 0: break;
22348  default: goto __pyx_L5_argtuple_error;
22349  }
22350  kw_args = PyDict_Size(__pyx_kwds);
22351  switch (pos_args) {
22352  case 0:
22353  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22354  else goto __pyx_L5_argtuple_error;
22355  case 1:
22356  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22357  else {
22358  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22359  }
22360  case 2:
22361  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22362  else {
22363  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22364  }
22365  }
22366  if (unlikely(kw_args > 0)) {
22367  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "etaWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22368  }
22369  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
22370  goto __pyx_L5_argtuple_error;
22371  } else {
22372  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22373  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22374  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22375  }
22376  __pyx_v_self = values[0];
22377  __pyx_v_x = values[1];
22378  __pyx_v_t = values[2];
22379  }
22380  goto __pyx_L4_argument_unpacking_done;
22381  __pyx_L5_argtuple_error:;
22382  __Pyx_RaiseArgtupleInvalid("etaWindow", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22383  __pyx_L3_error:;
22384  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22385  __Pyx_RefNannyFinishContext();
22386  return NULL;
22387  __pyx_L4_argument_unpacking_done:;
22388  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_8etaWindow(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
22389 
22390  /* function exit code */
22391  __Pyx_RefNannyFinishContext();
22392  return __pyx_r;
22393 }
22394 
22395 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_8etaWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
22396  PyObject *__pyx_v_Nw = NULL;
22397  PyObject *__pyx_v_ai = NULL;
22398  PyObject *__pyx_v_omega = NULL;
22399  PyObject *__pyx_v_phi = NULL;
22400  PyObject *__pyx_v_kDir = NULL;
22401  PyObject *__pyx_v_t0 = NULL;
22402  PyObject *__pyx_v_Eta = NULL;
22403  PyObject *__pyx_v_ii = NULL;
22404  PyObject *__pyx_v_x1 = NULL;
22405  PyObject *__pyx_r = NULL;
22406  __Pyx_RefNannyDeclarations
22407  PyObject *__pyx_t_1 = NULL;
22408  PyObject *__pyx_t_2 = NULL;
22409  PyObject *__pyx_t_3 = NULL;
22410  PyObject *__pyx_t_4 = NULL;
22411  Py_ssize_t __pyx_t_5;
22412  PyObject *(*__pyx_t_6)(PyObject *);
22413  PyObject *__pyx_t_7 = NULL;
22414  PyObject *__pyx_t_8 = NULL;
22415  PyObject *__pyx_t_9 = NULL;
22416  PyObject *__pyx_t_10 = NULL;
22417  PyObject *__pyx_t_11 = NULL;
22418  Py_ssize_t __pyx_t_12;
22419  PyObject *__pyx_t_13 = NULL;
22420  int __pyx_lineno = 0;
22421  const char *__pyx_filename = NULL;
22422  int __pyx_clineno = 0;
22423  __Pyx_RefNannySetupContext("etaWindow", 0);
22424 
22425  /* "WaveTools.pyx":1051
22426  * :param x: floating point x coordinate
22427  * :param t: time"""
22428  * Nw = self.findWindow(t) # <<<<<<<<<<<<<<
22429  * ai = self.decompose_window[Nw][1]
22430  * omega = self.decompose_window[Nw][0]
22431  */
22432  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_findWindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22433  __Pyx_GOTREF(__pyx_t_2);
22434  __pyx_t_3 = NULL;
22435  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
22436  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
22437  if (likely(__pyx_t_3)) {
22438  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22439  __Pyx_INCREF(__pyx_t_3);
22440  __Pyx_INCREF(function);
22441  __Pyx_DECREF_SET(__pyx_t_2, function);
22442  }
22443  }
22444  if (!__pyx_t_3) {
22445  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22446  __Pyx_GOTREF(__pyx_t_1);
22447  } else {
22448  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22449  __Pyx_GOTREF(__pyx_t_4);
22450  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
22451  __Pyx_INCREF(__pyx_v_t);
22452  __Pyx_GIVEREF(__pyx_v_t);
22453  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_t);
22454  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1051; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22455  __Pyx_GOTREF(__pyx_t_1);
22456  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22457  }
22458  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22459  __pyx_v_Nw = __pyx_t_1;
22460  __pyx_t_1 = 0;
22461 
22462  /* "WaveTools.pyx":1052
22463  * :param t: time"""
22464  * Nw = self.findWindow(t)
22465  * ai = self.decompose_window[Nw][1] # <<<<<<<<<<<<<<
22466  * omega = self.decompose_window[Nw][0]
22467  * phi = self.decompose_window[Nw][2]
22468  */
22469  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22470  __Pyx_GOTREF(__pyx_t_1);
22471  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22472  __Pyx_GOTREF(__pyx_t_2);
22473  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22474  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22475  __Pyx_GOTREF(__pyx_t_1);
22476  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22477  __pyx_v_ai = __pyx_t_1;
22478  __pyx_t_1 = 0;
22479 
22480  /* "WaveTools.pyx":1053
22481  * Nw = self.findWindow(t)
22482  * ai = self.decompose_window[Nw][1]
22483  * omega = self.decompose_window[Nw][0] # <<<<<<<<<<<<<<
22484  * phi = self.decompose_window[Nw][2]
22485  * kDir = self.decompose_window[Nw][4]
22486  */
22487  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22488  __Pyx_GOTREF(__pyx_t_1);
22489  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22490  __Pyx_GOTREF(__pyx_t_2);
22491  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22492  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1053; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22493  __Pyx_GOTREF(__pyx_t_1);
22494  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22495  __pyx_v_omega = __pyx_t_1;
22496  __pyx_t_1 = 0;
22497 
22498  /* "WaveTools.pyx":1054
22499  * ai = self.decompose_window[Nw][1]
22500  * omega = self.decompose_window[Nw][0]
22501  * phi = self.decompose_window[Nw][2] # <<<<<<<<<<<<<<
22502  * kDir = self.decompose_window[Nw][4]
22503  * t0 = self.windows_rec[Nw][0,0]
22504  */
22505  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22506  __Pyx_GOTREF(__pyx_t_1);
22507  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22508  __Pyx_GOTREF(__pyx_t_2);
22509  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22510  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22511  __Pyx_GOTREF(__pyx_t_1);
22512  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22513  __pyx_v_phi = __pyx_t_1;
22514  __pyx_t_1 = 0;
22515 
22516  /* "WaveTools.pyx":1055
22517  * omega = self.decompose_window[Nw][0]
22518  * phi = self.decompose_window[Nw][2]
22519  * kDir = self.decompose_window[Nw][4] # <<<<<<<<<<<<<<
22520  * t0 = self.windows_rec[Nw][0,0]
22521  * Eta=0.
22522  */
22523  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22524  __Pyx_GOTREF(__pyx_t_1);
22525  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22526  __Pyx_GOTREF(__pyx_t_2);
22527  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22528  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1055; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22529  __Pyx_GOTREF(__pyx_t_1);
22530  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22531  __pyx_v_kDir = __pyx_t_1;
22532  __pyx_t_1 = 0;
22533 
22534  /* "WaveTools.pyx":1056
22535  * phi = self.decompose_window[Nw][2]
22536  * kDir = self.decompose_window[Nw][4]
22537  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
22538  * Eta=0.
22539  * for ii in range(0,self.Nf):
22540  */
22541  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22542  __Pyx_GOTREF(__pyx_t_1);
22543  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22544  __Pyx_GOTREF(__pyx_t_2);
22545  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22546  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__123); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22547  __Pyx_GOTREF(__pyx_t_1);
22548  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22549  __pyx_v_t0 = __pyx_t_1;
22550  __pyx_t_1 = 0;
22551 
22552  /* "WaveTools.pyx":1057
22553  * kDir = self.decompose_window[Nw][4]
22554  * t0 = self.windows_rec[Nw][0,0]
22555  * Eta=0. # <<<<<<<<<<<<<<
22556  * for ii in range(0,self.Nf):
22557  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22558  */
22559  __Pyx_INCREF(__pyx_float_0_);
22560  __pyx_v_Eta = __pyx_float_0_;
22561 
22562  /* "WaveTools.pyx":1058
22563  * t0 = self.windows_rec[Nw][0,0]
22564  * Eta=0.
22565  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
22566  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22567  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22568  */
22569  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22570  __Pyx_GOTREF(__pyx_t_1);
22571  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22572  __Pyx_GOTREF(__pyx_t_2);
22573  __Pyx_INCREF(__pyx_int_0);
22574  __Pyx_GIVEREF(__pyx_int_0);
22575  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
22576  __Pyx_GIVEREF(__pyx_t_1);
22577  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
22578  __pyx_t_1 = 0;
22579  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22580  __Pyx_GOTREF(__pyx_t_1);
22581  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22582  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
22583  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
22584  __pyx_t_6 = NULL;
22585  } else {
22586  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22587  __Pyx_GOTREF(__pyx_t_2);
22588  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22589  }
22590  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22591  for (;;) {
22592  if (likely(!__pyx_t_6)) {
22593  if (likely(PyList_CheckExact(__pyx_t_2))) {
22594  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
22595  #if CYTHON_COMPILING_IN_CPYTHON
22596  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22597  #else
22598  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22599  __Pyx_GOTREF(__pyx_t_1);
22600  #endif
22601  } else {
22602  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
22603  #if CYTHON_COMPILING_IN_CPYTHON
22604  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22605  #else
22606  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22607  __Pyx_GOTREF(__pyx_t_1);
22608  #endif
22609  }
22610  } else {
22611  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
22612  if (unlikely(!__pyx_t_1)) {
22613  PyObject* exc_type = PyErr_Occurred();
22614  if (exc_type) {
22615  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
22616  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1058; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22617  }
22618  break;
22619  }
22620  __Pyx_GOTREF(__pyx_t_1);
22621  }
22622  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
22623  __pyx_t_1 = 0;
22624 
22625  /* "WaveTools.pyx":1059
22626  * Eta=0.
22627  * for ii in range(0,self.Nf):
22628  * x1 = np.array(x)-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
22629  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22630  * return Eta
22631  */
22632  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22633  __Pyx_GOTREF(__pyx_t_4);
22634  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22635  __Pyx_GOTREF(__pyx_t_3);
22636  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22637  __pyx_t_4 = NULL;
22638  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_3))) {
22639  __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
22640  if (likely(__pyx_t_4)) {
22641  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
22642  __Pyx_INCREF(__pyx_t_4);
22643  __Pyx_INCREF(function);
22644  __Pyx_DECREF_SET(__pyx_t_3, function);
22645  }
22646  }
22647  if (!__pyx_t_4) {
22648  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_x); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22649  __Pyx_GOTREF(__pyx_t_1);
22650  } else {
22651  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22652  __Pyx_GOTREF(__pyx_t_7);
22653  __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_4); __pyx_t_4 = NULL;
22654  __Pyx_INCREF(__pyx_v_x);
22655  __Pyx_GIVEREF(__pyx_v_x);
22656  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_v_x);
22657  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22658  __Pyx_GOTREF(__pyx_t_1);
22659  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
22660  }
22661  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
22662  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22663  __Pyx_GOTREF(__pyx_t_3);
22664  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22665  __Pyx_GOTREF(__pyx_t_7);
22666  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22667  __Pyx_GOTREF(__pyx_t_4);
22668  __pyx_t_8 = PyList_New(3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22669  __Pyx_GOTREF(__pyx_t_8);
22670  __Pyx_GIVEREF(__pyx_t_3);
22671  PyList_SET_ITEM(__pyx_t_8, 0, __pyx_t_3);
22672  __Pyx_GIVEREF(__pyx_t_7);
22673  PyList_SET_ITEM(__pyx_t_8, 1, __pyx_t_7);
22674  __Pyx_GIVEREF(__pyx_t_4);
22675  PyList_SET_ITEM(__pyx_t_8, 2, __pyx_t_4);
22676  __pyx_t_3 = 0;
22677  __pyx_t_7 = 0;
22678  __pyx_t_4 = 0;
22679  __pyx_t_4 = PyNumber_Subtract(__pyx_t_1, __pyx_t_8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1059; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22680  __Pyx_GOTREF(__pyx_t_4);
22681  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22682  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22683  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_4);
22684  __pyx_t_4 = 0;
22685 
22686  /* "WaveTools.pyx":1060
22687  * for ii in range(0,self.Nf):
22688  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22689  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii]) # <<<<<<<<<<<<<<
22690  * return Eta
22691  *
22692  */
22693  __pyx_t_8 = __Pyx_GetModuleGlobalName(__pyx_n_s_eta_mode); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22694  __Pyx_GOTREF(__pyx_t_8);
22695  __pyx_t_1 = PyNumber_Subtract(__pyx_v_t, __pyx_v_t0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22696  __Pyx_GOTREF(__pyx_t_1);
22697  __pyx_t_7 = PyObject_GetItem(__pyx_v_kDir, __pyx_v_ii); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22698  __Pyx_GOTREF(__pyx_t_7);
22699  __pyx_t_3 = PyObject_GetItem(__pyx_v_omega, __pyx_v_ii); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22700  __Pyx_GOTREF(__pyx_t_3);
22701  __pyx_t_9 = PyObject_GetItem(__pyx_v_phi, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22702  __Pyx_GOTREF(__pyx_t_9);
22703  __pyx_t_10 = PyObject_GetItem(__pyx_v_ai, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22704  __Pyx_GOTREF(__pyx_t_10);
22705  __pyx_t_11 = NULL;
22706  __pyx_t_12 = 0;
22707  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_8))) {
22708  __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_8);
22709  if (likely(__pyx_t_11)) {
22710  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_8);
22711  __Pyx_INCREF(__pyx_t_11);
22712  __Pyx_INCREF(function);
22713  __Pyx_DECREF_SET(__pyx_t_8, function);
22714  __pyx_t_12 = 1;
22715  }
22716  }
22717  __pyx_t_13 = PyTuple_New(6+__pyx_t_12); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22718  __Pyx_GOTREF(__pyx_t_13);
22719  if (__pyx_t_11) {
22720  __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_11); __pyx_t_11 = NULL;
22721  }
22722  __Pyx_INCREF(__pyx_v_x1);
22723  __Pyx_GIVEREF(__pyx_v_x1);
22724  PyTuple_SET_ITEM(__pyx_t_13, 0+__pyx_t_12, __pyx_v_x1);
22725  __Pyx_GIVEREF(__pyx_t_1);
22726  PyTuple_SET_ITEM(__pyx_t_13, 1+__pyx_t_12, __pyx_t_1);
22727  __Pyx_GIVEREF(__pyx_t_7);
22728  PyTuple_SET_ITEM(__pyx_t_13, 2+__pyx_t_12, __pyx_t_7);
22729  __Pyx_GIVEREF(__pyx_t_3);
22730  PyTuple_SET_ITEM(__pyx_t_13, 3+__pyx_t_12, __pyx_t_3);
22731  __Pyx_GIVEREF(__pyx_t_9);
22732  PyTuple_SET_ITEM(__pyx_t_13, 4+__pyx_t_12, __pyx_t_9);
22733  __Pyx_GIVEREF(__pyx_t_10);
22734  PyTuple_SET_ITEM(__pyx_t_13, 5+__pyx_t_12, __pyx_t_10);
22735  __pyx_t_1 = 0;
22736  __pyx_t_7 = 0;
22737  __pyx_t_3 = 0;
22738  __pyx_t_9 = 0;
22739  __pyx_t_10 = 0;
22740  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22741  __Pyx_GOTREF(__pyx_t_4);
22742  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
22743  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
22744  __pyx_t_8 = PyNumber_InPlaceAdd(__pyx_v_Eta, __pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1060; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22745  __Pyx_GOTREF(__pyx_t_8);
22746  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22747  __Pyx_DECREF_SET(__pyx_v_Eta, __pyx_t_8);
22748  __pyx_t_8 = 0;
22749 
22750  /* "WaveTools.pyx":1058
22751  * t0 = self.windows_rec[Nw][0,0]
22752  * Eta=0.
22753  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
22754  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22755  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22756  */
22757  }
22758  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22759 
22760  /* "WaveTools.pyx":1061
22761  * x1 = np.array(x)-[self.x0, self.y0, self.z0]
22762  * Eta+= eta_mode(x1, t-t0, kDir[ii], omega[ii], phi[ii], ai[ii])
22763  * return Eta # <<<<<<<<<<<<<<
22764  *
22765  * def uWindow(self, x, t):
22766  */
22767  __Pyx_XDECREF(__pyx_r);
22768  __Pyx_INCREF(__pyx_v_Eta);
22769  __pyx_r = __pyx_v_Eta;
22770  goto __pyx_L0;
22771 
22772  /* "WaveTools.pyx":1047
22773  * return Nw
22774  *
22775  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
22776  * """Free surface displacement
22777  * :param x: floating point x coordinate
22778  */
22779 
22780  /* function exit code */
22781  __pyx_L1_error:;
22782  __Pyx_XDECREF(__pyx_t_1);
22783  __Pyx_XDECREF(__pyx_t_2);
22784  __Pyx_XDECREF(__pyx_t_3);
22785  __Pyx_XDECREF(__pyx_t_4);
22786  __Pyx_XDECREF(__pyx_t_7);
22787  __Pyx_XDECREF(__pyx_t_8);
22788  __Pyx_XDECREF(__pyx_t_9);
22789  __Pyx_XDECREF(__pyx_t_10);
22790  __Pyx_XDECREF(__pyx_t_11);
22791  __Pyx_XDECREF(__pyx_t_13);
22792  __Pyx_AddTraceback("WaveTools.TimeSeries.etaWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22793  __pyx_r = NULL;
22794  __pyx_L0:;
22795  __Pyx_XDECREF(__pyx_v_Nw);
22796  __Pyx_XDECREF(__pyx_v_ai);
22797  __Pyx_XDECREF(__pyx_v_omega);
22798  __Pyx_XDECREF(__pyx_v_phi);
22799  __Pyx_XDECREF(__pyx_v_kDir);
22800  __Pyx_XDECREF(__pyx_v_t0);
22801  __Pyx_XDECREF(__pyx_v_Eta);
22802  __Pyx_XDECREF(__pyx_v_ii);
22803  __Pyx_XDECREF(__pyx_v_x1);
22804  __Pyx_XGIVEREF(__pyx_r);
22805  __Pyx_RefNannyFinishContext();
22806  return __pyx_r;
22807 }
22808 
22809 /* "WaveTools.pyx":1063
22810  * return Eta
22811  *
22812  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
22813  * """x-component of velocity
22814  *
22815  */
22816 
22817 /* Python wrapper */
22818 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11uWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
22819 static char __pyx_doc_9WaveTools_10TimeSeries_10uWindow[] = "TimeSeries.uWindow(self, x, t)\nx-component of velocity\n\n :param x: floating point x coordinate\n :param z: floating point z coordinate (height above bottom)\n :param t: time\n ";
22820 static PyMethodDef __pyx_mdef_9WaveTools_10TimeSeries_11uWindow = {"uWindow", (PyCFunction)__pyx_pw_9WaveTools_10TimeSeries_11uWindow, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9WaveTools_10TimeSeries_10uWindow};
22821 static PyObject *__pyx_pw_9WaveTools_10TimeSeries_11uWindow(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
22822  PyObject *__pyx_v_self = 0;
22823  PyObject *__pyx_v_x = 0;
22824  PyObject *__pyx_v_t = 0;
22825  int __pyx_lineno = 0;
22826  const char *__pyx_filename = NULL;
22827  int __pyx_clineno = 0;
22828  PyObject *__pyx_r = 0;
22829  __Pyx_RefNannyDeclarations
22830  __Pyx_RefNannySetupContext("uWindow (wrapper)", 0);
22831  {
22832  static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_self,&__pyx_n_s_x,&__pyx_n_s_t,0};
22833  PyObject* values[3] = {0,0,0};
22834  if (unlikely(__pyx_kwds)) {
22835  Py_ssize_t kw_args;
22836  const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
22837  switch (pos_args) {
22838  case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22839  case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22840  case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22841  case 0: break;
22842  default: goto __pyx_L5_argtuple_error;
22843  }
22844  kw_args = PyDict_Size(__pyx_kwds);
22845  switch (pos_args) {
22846  case 0:
22847  if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_self)) != 0)) kw_args--;
22848  else goto __pyx_L5_argtuple_error;
22849  case 1:
22850  if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
22851  else {
22852  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22853  }
22854  case 2:
22855  if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_t)) != 0)) kw_args--;
22856  else {
22857  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22858  }
22859  }
22860  if (unlikely(kw_args > 0)) {
22861  if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "uWindow") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22862  }
22863  } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
22864  goto __pyx_L5_argtuple_error;
22865  } else {
22866  values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
22867  values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
22868  values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
22869  }
22870  __pyx_v_self = values[0];
22871  __pyx_v_x = values[1];
22872  __pyx_v_t = values[2];
22873  }
22874  goto __pyx_L4_argument_unpacking_done;
22875  __pyx_L5_argtuple_error:;
22876  __Pyx_RaiseArgtupleInvalid("uWindow", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
22877  __pyx_L3_error:;
22878  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
22879  __Pyx_RefNannyFinishContext();
22880  return NULL;
22881  __pyx_L4_argument_unpacking_done:;
22882  __pyx_r = __pyx_pf_9WaveTools_10TimeSeries_10uWindow(__pyx_self, __pyx_v_self, __pyx_v_x, __pyx_v_t);
22883 
22884  /* function exit code */
22885  __Pyx_RefNannyFinishContext();
22886  return __pyx_r;
22887 }
22888 
22889 static PyObject *__pyx_pf_9WaveTools_10TimeSeries_10uWindow(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x, PyObject *__pyx_v_t) {
22890  PyObject *__pyx_v_Nw = NULL;
22891  PyObject *__pyx_v_ai = NULL;
22892  PyObject *__pyx_v_omega = NULL;
22893  PyObject *__pyx_v_phi = NULL;
22894  PyObject *__pyx_v_kDir = NULL;
22895  PyObject *__pyx_v_ki = NULL;
22896  PyObject *__pyx_v_t0 = NULL;
22897  PyObject *__pyx_v_U = NULL;
22898  PyObject *__pyx_v_ii = NULL;
22899  PyObject *__pyx_v_x1 = NULL;
22900  PyObject *__pyx_r = NULL;
22901  __Pyx_RefNannyDeclarations
22902  PyObject *__pyx_t_1 = NULL;
22903  PyObject *__pyx_t_2 = NULL;
22904  PyObject *__pyx_t_3 = NULL;
22905  PyObject *__pyx_t_4 = NULL;
22906  Py_ssize_t __pyx_t_5;
22907  PyObject *(*__pyx_t_6)(PyObject *);
22908  PyObject *__pyx_t_7 = NULL;
22909  PyObject *__pyx_t_8 = NULL;
22910  PyObject *__pyx_t_9 = NULL;
22911  PyObject *__pyx_t_10 = NULL;
22912  PyObject *__pyx_t_11 = NULL;
22913  PyObject *__pyx_t_12 = NULL;
22914  PyObject *__pyx_t_13 = NULL;
22915  PyObject *__pyx_t_14 = NULL;
22916  PyObject *__pyx_t_15 = NULL;
22917  PyObject *__pyx_t_16 = NULL;
22918  Py_ssize_t __pyx_t_17;
22919  PyObject *__pyx_t_18 = NULL;
22920  int __pyx_lineno = 0;
22921  const char *__pyx_filename = NULL;
22922  int __pyx_clineno = 0;
22923  __Pyx_RefNannySetupContext("uWindow", 0);
22924 
22925  /* "WaveTools.pyx":1070
22926  * :param t: time
22927  * """
22928  * Nw = self.findWindow(t) # <<<<<<<<<<<<<<
22929  * ai = self.decompose_window[Nw][1]
22930  * omega = self.decompose_window[Nw][0]
22931  */
22932  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_findWindow); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22933  __Pyx_GOTREF(__pyx_t_2);
22934  __pyx_t_3 = NULL;
22935  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_2))) {
22936  __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
22937  if (likely(__pyx_t_3)) {
22938  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
22939  __Pyx_INCREF(__pyx_t_3);
22940  __Pyx_INCREF(function);
22941  __Pyx_DECREF_SET(__pyx_t_2, function);
22942  }
22943  }
22944  if (!__pyx_t_3) {
22945  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_t); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22946  __Pyx_GOTREF(__pyx_t_1);
22947  } else {
22948  __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22949  __Pyx_GOTREF(__pyx_t_4);
22950  __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
22951  __Pyx_INCREF(__pyx_v_t);
22952  __Pyx_GIVEREF(__pyx_v_t);
22953  PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_v_t);
22954  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1070; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22955  __Pyx_GOTREF(__pyx_t_1);
22956  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
22957  }
22958  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22959  __pyx_v_Nw = __pyx_t_1;
22960  __pyx_t_1 = 0;
22961 
22962  /* "WaveTools.pyx":1071
22963  * """
22964  * Nw = self.findWindow(t)
22965  * ai = self.decompose_window[Nw][1] # <<<<<<<<<<<<<<
22966  * omega = self.decompose_window[Nw][0]
22967  * phi = self.decompose_window[Nw][2]
22968  */
22969  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22970  __Pyx_GOTREF(__pyx_t_1);
22971  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22972  __Pyx_GOTREF(__pyx_t_2);
22973  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22974  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22975  __Pyx_GOTREF(__pyx_t_1);
22976  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22977  __pyx_v_ai = __pyx_t_1;
22978  __pyx_t_1 = 0;
22979 
22980  /* "WaveTools.pyx":1072
22981  * Nw = self.findWindow(t)
22982  * ai = self.decompose_window[Nw][1]
22983  * omega = self.decompose_window[Nw][0] # <<<<<<<<<<<<<<
22984  * phi = self.decompose_window[Nw][2]
22985  * kDir = self.decompose_window[Nw][4]
22986  */
22987  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
22988  __Pyx_GOTREF(__pyx_t_1);
22989  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22990  __Pyx_GOTREF(__pyx_t_2);
22991  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
22992  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
22993  __Pyx_GOTREF(__pyx_t_1);
22994  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
22995  __pyx_v_omega = __pyx_t_1;
22996  __pyx_t_1 = 0;
22997 
22998  /* "WaveTools.pyx":1073
22999  * ai = self.decompose_window[Nw][1]
23000  * omega = self.decompose_window[Nw][0]
23001  * phi = self.decompose_window[Nw][2] # <<<<<<<<<<<<<<
23002  * kDir = self.decompose_window[Nw][4]
23003  * ki = self.decompose_window[Nw][5]
23004  */
23005  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23006  __Pyx_GOTREF(__pyx_t_1);
23007  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23008  __Pyx_GOTREF(__pyx_t_2);
23009  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23010  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 2, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1073; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23011  __Pyx_GOTREF(__pyx_t_1);
23012  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23013  __pyx_v_phi = __pyx_t_1;
23014  __pyx_t_1 = 0;
23015 
23016  /* "WaveTools.pyx":1074
23017  * omega = self.decompose_window[Nw][0]
23018  * phi = self.decompose_window[Nw][2]
23019  * kDir = self.decompose_window[Nw][4] # <<<<<<<<<<<<<<
23020  * ki = self.decompose_window[Nw][5]
23021  * t0 = self.windows_rec[Nw][0,0]
23022  */
23023  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23024  __Pyx_GOTREF(__pyx_t_1);
23025  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23026  __Pyx_GOTREF(__pyx_t_2);
23027  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23028  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 4, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1074; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23029  __Pyx_GOTREF(__pyx_t_1);
23030  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23031  __pyx_v_kDir = __pyx_t_1;
23032  __pyx_t_1 = 0;
23033 
23034  /* "WaveTools.pyx":1075
23035  * phi = self.decompose_window[Nw][2]
23036  * kDir = self.decompose_window[Nw][4]
23037  * ki = self.decompose_window[Nw][5] # <<<<<<<<<<<<<<
23038  * t0 = self.windows_rec[Nw][0,0]
23039  * U=0.
23040  */
23041  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_decompose_window); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23042  __Pyx_GOTREF(__pyx_t_1);
23043  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23044  __Pyx_GOTREF(__pyx_t_2);
23045  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23046  __pyx_t_1 = __Pyx_GetItemInt(__pyx_t_2, 5, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1075; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23047  __Pyx_GOTREF(__pyx_t_1);
23048  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23049  __pyx_v_ki = __pyx_t_1;
23050  __pyx_t_1 = 0;
23051 
23052  /* "WaveTools.pyx":1076
23053  * kDir = self.decompose_window[Nw][4]
23054  * ki = self.decompose_window[Nw][5]
23055  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
23056  * U=0.
23057  * for ii in range(0,self.Nf):
23058  */
23059  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_windows_rec); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23060  __Pyx_GOTREF(__pyx_t_1);
23061  __pyx_t_2 = PyObject_GetItem(__pyx_t_1, __pyx_v_Nw); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23062  __Pyx_GOTREF(__pyx_t_2);
23063  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23064  __pyx_t_1 = PyObject_GetItem(__pyx_t_2, __pyx_tuple__124); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23065  __Pyx_GOTREF(__pyx_t_1);
23066  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23067  __pyx_v_t0 = __pyx_t_1;
23068  __pyx_t_1 = 0;
23069 
23070  /* "WaveTools.pyx":1077
23071  * ki = self.decompose_window[Nw][5]
23072  * t0 = self.windows_rec[Nw][0,0]
23073  * U=0. # <<<<<<<<<<<<<<
23074  * for ii in range(0,self.Nf):
23075  * x1 = x-[self.x0, self.y0, self.z0]
23076  */
23077  __Pyx_INCREF(__pyx_float_0_);
23078  __pyx_v_U = __pyx_float_0_;
23079 
23080  /* "WaveTools.pyx":1078
23081  * t0 = self.windows_rec[Nw][0,0]
23082  * U=0.
23083  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
23084  * x1 = x-[self.x0, self.y0, self.z0]
23085  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23086  */
23087  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_Nf); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23088  __Pyx_GOTREF(__pyx_t_1);
23089  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23090  __Pyx_GOTREF(__pyx_t_2);
23091  __Pyx_INCREF(__pyx_int_0);
23092  __Pyx_GIVEREF(__pyx_int_0);
23093  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_int_0);
23094  __Pyx_GIVEREF(__pyx_t_1);
23095  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
23096  __pyx_t_1 = 0;
23097  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_range, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23098  __Pyx_GOTREF(__pyx_t_1);
23099  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23100  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
23101  __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
23102  __pyx_t_6 = NULL;
23103  } else {
23104  __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23105  __Pyx_GOTREF(__pyx_t_2);
23106  __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23107  }
23108  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
23109  for (;;) {
23110  if (likely(!__pyx_t_6)) {
23111  if (likely(PyList_CheckExact(__pyx_t_2))) {
23112  if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
23113  #if CYTHON_COMPILING_IN_CPYTHON
23114  __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23115  #else
23116  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23117  __Pyx_GOTREF(__pyx_t_1);
23118  #endif
23119  } else {
23120  if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
23121  #if CYTHON_COMPILING_IN_CPYTHON
23122  __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_1); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23123  #else
23124  __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23125  __Pyx_GOTREF(__pyx_t_1);
23126  #endif
23127  }
23128  } else {
23129  __pyx_t_1 = __pyx_t_6(__pyx_t_2);
23130  if (unlikely(!__pyx_t_1)) {
23131  PyObject* exc_type = PyErr_Occurred();
23132  if (exc_type) {
23133  if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
23134  else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23135  }
23136  break;
23137  }
23138  __Pyx_GOTREF(__pyx_t_1);
23139  }
23140  __Pyx_XDECREF_SET(__pyx_v_ii, __pyx_t_1);
23141  __pyx_t_1 = 0;
23142 
23143  /* "WaveTools.pyx":1079
23144  * U=0.
23145  * for ii in range(0,self.Nf):
23146  * x1 = x-[self.x0, self.y0, self.z0] # <<<<<<<<<<<<<<
23147  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23148  * return U
23149  */
23150  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_x0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23151  __Pyx_GOTREF(__pyx_t_1);
23152  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_y0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23153  __Pyx_GOTREF(__pyx_t_4);
23154  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_z0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23155  __Pyx_GOTREF(__pyx_t_3);
23156  __pyx_t_7 = PyList_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23157  __Pyx_GOTREF(__pyx_t_7);
23158  __Pyx_GIVEREF(__pyx_t_1);
23159  PyList_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
23160  __Pyx_GIVEREF(__pyx_t_4);
23161  PyList_SET_ITEM(__pyx_t_7, 1, __pyx_t_4);
23162  __Pyx_GIVEREF(__pyx_t_3);
23163  PyList_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
23164  __pyx_t_1 = 0;
23165  __pyx_t_4 = 0;
23166  __pyx_t_3 = 0;
23167  __pyx_t_3 = PyNumber_Subtract(__pyx_v_x, __pyx_t_7); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23168  __Pyx_GOTREF(__pyx_t_3);
23169  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23170  __Pyx_XDECREF_SET(__pyx_v_x1, __pyx_t_3);
23171  __pyx_t_3 = 0;
23172 
23173  /* "WaveTools.pyx":1080
23174  * for ii in range(0,self.Nf):
23175  * x1 = x-[self.x0, self.y0, self.z0]
23176  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir) # <<<<<<<<<<<<<<
23177  * return U
23178  *
23179  */
23180  __pyx_t_7 = __Pyx_GetModuleGlobalName(__pyx_n_s_vel_mode); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23181  __Pyx_GOTREF(__pyx_t_7);
23182  __pyx_t_4 = PyNumber_Subtract(__pyx_v_t, __pyx_v_t0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23183  __Pyx_GOTREF(__pyx_t_4);
23184  __pyx_t_1 = PyObject_GetItem(__pyx_v_kDir, __pyx_v_ii); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23185  __Pyx_GOTREF(__pyx_t_1);
23186  __pyx_t_8 = PyObject_GetItem(__pyx_v_ki, __pyx_v_ii); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23187  __Pyx_GOTREF(__pyx_t_8);
23188  __pyx_t_9 = PyObject_GetItem(__pyx_v_omega, __pyx_v_ii); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23189  __Pyx_GOTREF(__pyx_t_9);
23190  __pyx_t_10 = PyObject_GetItem(__pyx_v_phi, __pyx_v_ii); if (unlikely(__pyx_t_10 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23191  __Pyx_GOTREF(__pyx_t_10);
23192  __pyx_t_11 = PyObject_GetItem(__pyx_v_ai, __pyx_v_ii); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
23193  __Pyx_GOTREF(__pyx_t_11);
23194  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_mwl); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23195  __Pyx_GOTREF(__pyx_t_12);
23196  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_depth); if (unlikely(!__pyx_t_13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23197  __Pyx_GOTREF(__pyx_t_13);
23198  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_g); if (unlikely(!__pyx_t_14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23199  __Pyx_GOTREF(__pyx_t_14);
23200  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_n_s_vDir); if (unlikely(!__pyx_t_15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23201  __Pyx_GOTREF(__pyx_t_15);
23202  __pyx_t_16 = NULL;
23203  __pyx_t_17 = 0;
23204  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_7))) {
23205  __pyx_t_16 = PyMethod_GET_SELF(__pyx_t_7);
23206  if (likely(__pyx_t_16)) {
23207  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_7);
23208  __Pyx_INCREF(__pyx_t_16);
23209  __Pyx_INCREF(function);
23210  __Pyx_DECREF_SET(__pyx_t_7, function);
23211  __pyx_t_17 = 1;
23212  }
23213  }
23214  __pyx_t_18 = PyTuple_New(11+__pyx_t_17); if (unlikely(!__pyx_t_18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23215  __Pyx_GOTREF(__pyx_t_18);
23216  if (__pyx_t_16) {
23217  __Pyx_GIVEREF(__pyx_t_16); PyTuple_SET_ITEM(__pyx_t_18, 0, __pyx_t_16); __pyx_t_16 = NULL;
23218  }
23219  __Pyx_INCREF(__pyx_v_x1);
23220  __Pyx_GIVEREF(__pyx_v_x1);
23221  PyTuple_SET_ITEM(__pyx_t_18, 0+__pyx_t_17, __pyx_v_x1);
23222  __Pyx_GIVEREF(__pyx_t_4);
23223  PyTuple_SET_ITEM(__pyx_t_18, 1+__pyx_t_17, __pyx_t_4);
23224  __Pyx_GIVEREF(__pyx_t_1);
23225  PyTuple_SET_ITEM(__pyx_t_18, 2+__pyx_t_17, __pyx_t_1);
23226  __Pyx_GIVEREF(__pyx_t_8);
23227  PyTuple_SET_ITEM(__pyx_t_18, 3+__pyx_t_17, __pyx_t_8);
23228  __Pyx_GIVEREF(__pyx_t_9);
23229  PyTuple_SET_ITEM(__pyx_t_18, 4+__pyx_t_17, __pyx_t_9);
23230  __Pyx_GIVEREF(__pyx_t_10);
23231  PyTuple_SET_ITEM(__pyx_t_18, 5+__pyx_t_17, __pyx_t_10);
23232  __Pyx_GIVEREF(__pyx_t_11);
23233  PyTuple_SET_ITEM(__pyx_t_18, 6+__pyx_t_17, __pyx_t_11);
23234  __Pyx_GIVEREF(__pyx_t_12);
23235  PyTuple_SET_ITEM(__pyx_t_18, 7+__pyx_t_17, __pyx_t_12);
23236  __Pyx_GIVEREF(__pyx_t_13);
23237  PyTuple_SET_ITEM(__pyx_t_18, 8+__pyx_t_17, __pyx_t_13);
23238  __Pyx_GIVEREF(__pyx_t_14);
23239  PyTuple_SET_ITEM(__pyx_t_18, 9+__pyx_t_17, __pyx_t_14);
23240  __Pyx_GIVEREF(__pyx_t_15);
23241  PyTuple_SET_ITEM(__pyx_t_18, 10+__pyx_t_17, __pyx_t_15);
23242  __pyx_t_4 = 0;
23243  __pyx_t_1 = 0;
23244  __pyx_t_8 = 0;
23245  __pyx_t_9 = 0;
23246  __pyx_t_10 = 0;
23247  __pyx_t_11 = 0;
23248  __pyx_t_12 = 0;
23249  __pyx_t_13 = 0;
23250  __pyx_t_14 = 0;
23251  __pyx_t_15 = 0;
23252  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_18, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23253  __Pyx_GOTREF(__pyx_t_3);
23254  __Pyx_DECREF(__pyx_t_18); __pyx_t_18 = 0;
23255  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
23256  __pyx_t_7 = PyNumber_InPlaceAdd(__pyx_v_U, __pyx_t_3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1080; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23257  __Pyx_GOTREF(__pyx_t_7);
23258  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
23259  __Pyx_DECREF_SET(__pyx_v_U, __pyx_t_7);
23260  __pyx_t_7 = 0;
23261 
23262  /* "WaveTools.pyx":1078
23263  * t0 = self.windows_rec[Nw][0,0]
23264  * U=0.
23265  * for ii in range(0,self.Nf): # <<<<<<<<<<<<<<
23266  * x1 = x-[self.x0, self.y0, self.z0]
23267  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23268  */
23269  }
23270  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
23271 
23272  /* "WaveTools.pyx":1081
23273  * x1 = x-[self.x0, self.y0, self.z0]
23274  * U+= vel_mode(x1, t-t0, kDir[ii],ki[ii],omega[ii],phi[ii],ai[ii],self.mwl,self.depth,self.g,self.vDir)
23275  * return U # <<<<<<<<<<<<<<
23276  *
23277  *
23278  */
23279  __Pyx_XDECREF(__pyx_r);
23280  __Pyx_INCREF(__pyx_v_U);
23281  __pyx_r = __pyx_v_U;
23282  goto __pyx_L0;
23283 
23284  /* "WaveTools.pyx":1063
23285  * return Eta
23286  *
23287  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
23288  * """x-component of velocity
23289  *
23290  */
23291 
23292  /* function exit code */
23293  __pyx_L1_error:;
23294  __Pyx_XDECREF(__pyx_t_1);
23295  __Pyx_XDECREF(__pyx_t_2);
23296  __Pyx_XDECREF(__pyx_t_3);
23297  __Pyx_XDECREF(__pyx_t_4);
23298  __Pyx_XDECREF(__pyx_t_7);
23299  __Pyx_XDECREF(__pyx_t_8);
23300  __Pyx_XDECREF(__pyx_t_9);
23301  __Pyx_XDECREF(__pyx_t_10);
23302  __Pyx_XDECREF(__pyx_t_11);
23303  __Pyx_XDECREF(__pyx_t_12);
23304  __Pyx_XDECREF(__pyx_t_13);
23305  __Pyx_XDECREF(__pyx_t_14);
23306  __Pyx_XDECREF(__pyx_t_15);
23307  __Pyx_XDECREF(__pyx_t_16);
23308  __Pyx_XDECREF(__pyx_t_18);
23309  __Pyx_AddTraceback("WaveTools.TimeSeries.uWindow", __pyx_clineno, __pyx_lineno, __pyx_filename);
23310  __pyx_r = NULL;
23311  __pyx_L0:;
23312  __Pyx_XDECREF(__pyx_v_Nw);
23313  __Pyx_XDECREF(__pyx_v_ai);
23314  __Pyx_XDECREF(__pyx_v_omega);
23315  __Pyx_XDECREF(__pyx_v_phi);
23316  __Pyx_XDECREF(__pyx_v_kDir);
23317  __Pyx_XDECREF(__pyx_v_ki);
23318  __Pyx_XDECREF(__pyx_v_t0);
23319  __Pyx_XDECREF(__pyx_v_U);
23320  __Pyx_XDECREF(__pyx_v_ii);
23321  __Pyx_XDECREF(__pyx_v_x1);
23322  __Pyx_XGIVEREF(__pyx_r);
23323  __Pyx_RefNannyFinishContext();
23324  return __pyx_r;
23325 }
23326 
23327 static PyMethodDef __pyx_methods[] = {
23328  {0, 0, 0, 0}
23329 };
23330 
23331 #if PY_MAJOR_VERSION >= 3
23332 static struct PyModuleDef __pyx_moduledef = {
23333  #if PY_VERSION_HEX < 0x03020000
23334  { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
23335  #else
23336  PyModuleDef_HEAD_INIT,
23337  #endif
23338  "WaveTools",
23339  __pyx_k_Tools_for_working_with_water_wav, /* m_doc */
23340  -1, /* m_size */
23341  __pyx_methods /* m_methods */,
23342  NULL, /* m_reload */
23343  NULL, /* m_traverse */
23344  NULL, /* m_clear */
23345  NULL /* m_free */
23346 };
23347 #endif
23348 
23349 static __Pyx_StringTabEntry __pyx_string_tab[] = {
23350  {&__pyx_n_s_B, __pyx_k_B, sizeof(__pyx_k_B), 0, 0, 1, 1},
23351  {&__pyx_n_s_Bcoeff, __pyx_k_Bcoeff, sizeof(__pyx_k_Bcoeff), 0, 0, 1, 1},
23352  {&__pyx_n_s_Cutoff, __pyx_k_Cutoff, sizeof(__pyx_k_Cutoff), 0, 0, 1, 1},
23353  {&__pyx_n_s_DirectionalWaves, __pyx_k_DirectionalWaves, sizeof(__pyx_k_DirectionalWaves), 0, 0, 1, 1},
23354  {&__pyx_n_s_DirectionalWaves___init, __pyx_k_DirectionalWaves___init, sizeof(__pyx_k_DirectionalWaves___init), 0, 0, 1, 1},
23355  {&__pyx_n_s_DirectionalWaves_eta, __pyx_k_DirectionalWaves_eta, sizeof(__pyx_k_DirectionalWaves_eta), 0, 0, 1, 1},
23356  {&__pyx_n_s_DirectionalWaves_u, __pyx_k_DirectionalWaves_u, sizeof(__pyx_k_DirectionalWaves_u), 0, 0, 1, 1},
23357  {&__pyx_n_s_Eta, __pyx_k_Eta, sizeof(__pyx_k_Eta), 0, 0, 1, 1},
23358  {&__pyx_n_s_Fenton, __pyx_k_Fenton, sizeof(__pyx_k_Fenton), 0, 0, 1, 1},
23359  {&__pyx_n_s_G0, __pyx_k_G0, sizeof(__pyx_k_G0), 0, 0, 1, 1},
23360  {&__pyx_kp_s_Generate_a_monochromatic_wave_tr, __pyx_k_Generate_a_monochromatic_wave_tr, sizeof(__pyx_k_Generate_a_monochromatic_wave_tr), 0, 0, 1, 0},
23361  {&__pyx_kp_s_Generate_a_random_wave_timeserie, __pyx_k_Generate_a_random_wave_timeserie, sizeof(__pyx_k_Generate_a_random_wave_timeserie), 0, 0, 1, 0},
23362  {&__pyx_kp_s_Generate_a_random_wave_timeserie_2, __pyx_k_Generate_a_random_wave_timeserie_2, sizeof(__pyx_k_Generate_a_random_wave_timeserie_2), 0, 0, 1, 0},
23363  {&__pyx_kp_s_Generate_a_time_series_by_using, __pyx_k_Generate_a_time_series_by_using, sizeof(__pyx_k_Generate_a_time_series_by_using), 0, 0, 1, 0},
23364  {&__pyx_kp_s_Generate_approximate_random_wave, __pyx_k_Generate_approximate_random_wave, sizeof(__pyx_k_Generate_approximate_random_wave), 0, 0, 1, 0},
23365  {&__pyx_n_s_HH, __pyx_k_HH, sizeof(__pyx_k_HH), 0, 0, 1, 1},
23366  {&__pyx_n_s_Hs, __pyx_k_Hs, sizeof(__pyx_k_Hs), 0, 0, 1, 1},
23367  {&__pyx_n_s_JONSWAP, __pyx_k_JONSWAP, sizeof(__pyx_k_JONSWAP), 0, 0, 1, 1},
23368  {&__pyx_n_s_K, __pyx_k_K, sizeof(__pyx_k_K), 0, 0, 1, 1},
23369  {&__pyx_n_s_Linear, __pyx_k_Linear, sizeof(__pyx_k_Linear), 0, 0, 1, 1},
23370  {&__pyx_n_s_M, __pyx_k_M, sizeof(__pyx_k_M), 0, 0, 1, 1},
23371  {&__pyx_n_s_MonochromaticWaves, __pyx_k_MonochromaticWaves, sizeof(__pyx_k_MonochromaticWaves), 0, 0, 1, 1},
23372  {&__pyx_n_s_MonochromaticWaves___init, __pyx_k_MonochromaticWaves___init, sizeof(__pyx_k_MonochromaticWaves___init), 0, 0, 1, 1},
23373  {&__pyx_n_s_MonochromaticWaves_eta, __pyx_k_MonochromaticWaves_eta, sizeof(__pyx_k_MonochromaticWaves_eta), 0, 0, 1, 1},
23374  {&__pyx_n_s_MonochromaticWaves_u, __pyx_k_MonochromaticWaves_u, sizeof(__pyx_k_MonochromaticWaves_u), 0, 0, 1, 1},
23375  {&__pyx_n_s_Mtot, __pyx_k_Mtot, sizeof(__pyx_k_Mtot), 0, 0, 1, 1},
23376  {&__pyx_n_s_MultiSpectraRandomWaves, __pyx_k_MultiSpectraRandomWaves, sizeof(__pyx_k_MultiSpectraRandomWaves), 0, 0, 1, 1},
23377  {&__pyx_n_s_MultiSpectraRandomWaves___init, __pyx_k_MultiSpectraRandomWaves___init, sizeof(__pyx_k_MultiSpectraRandomWaves___init), 0, 0, 1, 1},
23378  {&__pyx_n_s_MultiSpectraRandomWaves_eta, __pyx_k_MultiSpectraRandomWaves_eta, sizeof(__pyx_k_MultiSpectraRandomWaves_eta), 0, 0, 1, 1},
23379  {&__pyx_n_s_MultiSpectraRandomWaves_u, __pyx_k_MultiSpectraRandomWaves_u, sizeof(__pyx_k_MultiSpectraRandomWaves_u), 0, 0, 1, 1},
23380  {&__pyx_n_s_N, __pyx_k_N, sizeof(__pyx_k_N), 0, 0, 1, 1},
23381  {&__pyx_n_s_NN, __pyx_k_NN, sizeof(__pyx_k_NN), 0, 0, 1, 1},
23382  {&__pyx_n_s_NN1, __pyx_k_NN1, sizeof(__pyx_k_NN1), 0, 0, 1, 1},
23383  {&__pyx_n_s_Nall, __pyx_k_Nall, sizeof(__pyx_k_Nall), 0, 0, 1, 1},
23384  {&__pyx_n_s_Nf, __pyx_k_Nf, sizeof(__pyx_k_Nf), 0, 0, 1, 1},
23385  {&__pyx_n_s_Nftemp, __pyx_k_Nftemp, sizeof(__pyx_k_Nftemp), 0, 0, 1, 1},
23386  {&__pyx_n_s_Nspectra, __pyx_k_Nspectra, sizeof(__pyx_k_Nspectra), 0, 0, 1, 1},
23387  {&__pyx_n_s_Nw, __pyx_k_Nw, sizeof(__pyx_k_Nw), 0, 0, 1, 1},
23388  {&__pyx_n_s_Nwaves, __pyx_k_Nwaves, sizeof(__pyx_k_Nwaves), 0, 0, 1, 1},
23389  {&__pyx_n_s_Nwindows, __pyx_k_Nwindows, sizeof(__pyx_k_Nwindows), 0, 0, 1, 1},
23390  {&__pyx_n_s_Overlap, __pyx_k_Overlap, sizeof(__pyx_k_Overlap), 0, 0, 1, 1},
23391  {&__pyx_n_s_PM_mod, __pyx_k_PM_mod, sizeof(__pyx_k_PM_mod), 0, 0, 1, 1},
23392  {&__pyx_n_s_Profiling, __pyx_k_Profiling, sizeof(__pyx_k_Profiling), 0, 0, 1, 1},
23393  {&__pyx_n_s_RandomWaves, __pyx_k_RandomWaves, sizeof(__pyx_k_RandomWaves), 0, 0, 1, 1},
23394  {&__pyx_n_s_RandomWaves___init, __pyx_k_RandomWaves___init, sizeof(__pyx_k_RandomWaves___init), 0, 0, 1, 1},
23395  {&__pyx_n_s_RandomWaves_eta, __pyx_k_RandomWaves_eta, sizeof(__pyx_k_RandomWaves_eta), 0, 0, 1, 1},
23396  {&__pyx_n_s_RandomWaves_u, __pyx_k_RandomWaves_u, sizeof(__pyx_k_RandomWaves_u), 0, 0, 1, 1},
23397  {&__pyx_n_s_Si_Jm, __pyx_k_Si_Jm, sizeof(__pyx_k_Si_Jm), 0, 0, 1, 1},
23398  {&__pyx_n_s_Si_Sp, __pyx_k_Si_Sp, sizeof(__pyx_k_Si_Sp), 0, 0, 1, 1},
23399  {&__pyx_n_s_Sint, __pyx_k_Sint, sizeof(__pyx_k_Sint), 0, 0, 1, 1},
23400  {&__pyx_n_s_SpatialTools, __pyx_k_SpatialTools, sizeof(__pyx_k_SpatialTools), 0, 0, 1, 1},
23401  {&__pyx_n_s_TMA, __pyx_k_TMA, sizeof(__pyx_k_TMA), 0, 0, 1, 1},
23402  {&__pyx_n_s_TimeSeries, __pyx_k_TimeSeries, sizeof(__pyx_k_TimeSeries), 0, 0, 1, 1},
23403  {&__pyx_n_s_TimeSeries___init, __pyx_k_TimeSeries___init, sizeof(__pyx_k_TimeSeries___init), 0, 0, 1, 1},
23404  {&__pyx_n_s_TimeSeries_etaDirect, __pyx_k_TimeSeries_etaDirect, sizeof(__pyx_k_TimeSeries_etaDirect), 0, 0, 1, 1},
23405  {&__pyx_n_s_TimeSeries_etaWindow, __pyx_k_TimeSeries_etaWindow, sizeof(__pyx_k_TimeSeries_etaWindow), 0, 0, 1, 1},
23406  {&__pyx_n_s_TimeSeries_findWindow, __pyx_k_TimeSeries_findWindow, sizeof(__pyx_k_TimeSeries_findWindow), 0, 0, 1, 1},
23407  {&__pyx_n_s_TimeSeries_uDirect, __pyx_k_TimeSeries_uDirect, sizeof(__pyx_k_TimeSeries_uDirect), 0, 0, 1, 1},
23408  {&__pyx_n_s_TimeSeries_uWindow, __pyx_k_TimeSeries_uWindow, sizeof(__pyx_k_TimeSeries_uWindow), 0, 0, 1, 1},
23409  {&__pyx_n_s_Tm, __pyx_k_Tm, sizeof(__pyx_k_Tm), 0, 0, 1, 1},
23410  {&__pyx_n_s_Toverlap, __pyx_k_Toverlap, sizeof(__pyx_k_Toverlap), 0, 0, 1, 1},
23411  {&__pyx_n_s_Tp, __pyx_k_Tp, sizeof(__pyx_k_Tp), 0, 0, 1, 1},
23412  {&__pyx_n_s_Twindow, __pyx_k_Twindow, sizeof(__pyx_k_Twindow), 0, 0, 1, 1},
23413  {&__pyx_n_s_U, __pyx_k_U, sizeof(__pyx_k_U), 0, 0, 1, 1},
23414  {&__pyx_n_s_UH, __pyx_k_UH, sizeof(__pyx_k_UH), 0, 0, 1, 1},
23415  {&__pyx_n_s_UV, __pyx_k_UV, sizeof(__pyx_k_UV), 0, 0, 1, 1},
23416  {&__pyx_n_s_Ufenton, __pyx_k_Ufenton, sizeof(__pyx_k_Ufenton), 0, 0, 1, 1},
23417  {&__pyx_n_s_V, __pyx_k_V, sizeof(__pyx_k_V), 0, 0, 1, 1},
23418  {&__pyx_n_s_WaveTools, __pyx_k_WaveTools, sizeof(__pyx_k_WaveTools), 0, 0, 1, 1},
23419  {&__pyx_kp_s_WaveTools_py_Additional_spectral, __pyx_k_WaveTools_py_Additional_spectral, sizeof(__pyx_k_WaveTools_py_Additional_spectral), 0, 0, 1, 0},
23420  {&__pyx_kp_s_WaveTools_py_Additional_spread_p, __pyx_k_WaveTools_py_Additional_spread_p, sizeof(__pyx_k_WaveTools_py_Additional_spread_p), 0, 0, 1, 0},
23421  {&__pyx_kp_s_WaveTools_py_Checking_duration_o, __pyx_k_WaveTools_py_Checking_duration_o, sizeof(__pyx_k_WaveTools_py_Checking_duration_o), 0, 0, 1, 0},
23422  {&__pyx_kp_s_WaveTools_py_Correcting_window_d, __pyx_k_WaveTools_py_Correcting_window_d, sizeof(__pyx_k_WaveTools_py_Correcting_window_d), 0, 0, 1, 0},
23423  {&__pyx_kp_s_WaveTools_py_Cutoff_entry_in_win, __pyx_k_WaveTools_py_Cutoff_entry_in_win, sizeof(__pyx_k_WaveTools_py_Cutoff_entry_in_win), 0, 0, 1, 0},
23424  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Nwav, __pyx_k_WaveTools_py_Dictionary_key_Nwav, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Nwav), 0, 0, 1, 0},
23425  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m, __pyx_k_WaveTools_py_Dictionary_key_Tm_m, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Tm_m), 0, 0, 1, 0},
23426  {&__pyx_kp_s_WaveTools_py_Dictionary_key_Wind, __pyx_k_WaveTools_py_Dictionary_key_Wind, sizeof(__pyx_k_WaveTools_py_Dictionary_key_Wind), 0, 0, 1, 0},
23427  {&__pyx_kp_s_WaveTools_py_File_s_must_be_give, __pyx_k_WaveTools_py_File_s_must_be_give, sizeof(__pyx_k_WaveTools_py_File_s_must_be_give), 0, 0, 1, 0},
23428  {&__pyx_kp_s_WaveTools_py_Found_not_consisten, __pyx_k_WaveTools_py_Found_not_consisten, sizeof(__pyx_k_WaveTools_py_Found_not_consisten), 0, 0, 1, 0},
23429  {&__pyx_kp_s_WaveTools_py_Location_vector_for, __pyx_k_WaveTools_py_Location_vector_for, sizeof(__pyx_k_WaveTools_py_Location_vector_for), 0, 0, 1, 0},
23430  {&__pyx_kp_s_WaveTools_py_Need_to_define_Ycoe, __pyx_k_WaveTools_py_Need_to_define_Ycoe, sizeof(__pyx_k_WaveTools_py_Need_to_define_Ycoe), 0, 0, 1, 0},
23431  {&__pyx_kp_s_WaveTools_py_No_phase_array_is_g, __pyx_k_WaveTools_py_No_phase_array_is_g, sizeof(__pyx_k_WaveTools_py_No_phase_array_is_g), 0, 0, 1, 0},
23432  {&__pyx_kp_s_WaveTools_py_Not_constant_sampli, __pyx_k_WaveTools_py_Not_constant_sampli, sizeof(__pyx_k_WaveTools_py_Not_constant_sampli), 0, 0, 1, 0},
23433  {&__pyx_kp_s_WaveTools_py_Overlap_entry_in_wi, __pyx_k_WaveTools_py_Overlap_entry_in_wi, sizeof(__pyx_k_WaveTools_py_Overlap_entry_in_wi), 0, 0, 1, 0},
23434  {&__pyx_kp_s_WaveTools_py_Parameters_passed_i, __pyx_k_WaveTools_py_Parameters_passed_i, sizeof(__pyx_k_WaveTools_py_Parameters_passed_i), 0, 0, 1, 0},
23435  {&__pyx_kp_s_WaveTools_py_Phase_array_must_ha, __pyx_k_WaveTools_py_Phase_array_must_ha, sizeof(__pyx_k_WaveTools_py_Phase_array_must_ha), 0, 0, 1, 0},
23436  {&__pyx_kp_s_WaveTools_py_Reading_spectra_No, __pyx_k_WaveTools_py_Reading_spectra_No, sizeof(__pyx_k_WaveTools_py_Reading_spectra_No), 0, 0, 1, 0},
23437  {&__pyx_kp_s_WaveTools_py_Reading_timeseries, __pyx_k_WaveTools_py_Reading_timeseries, sizeof(__pyx_k_WaveTools_py_Reading_timeseries), 0, 0, 1, 0},
23438  {&__pyx_kp_s_WaveTools_py_Reconstruction_is_e, __pyx_k_WaveTools_py_Reconstruction_is_e, sizeof(__pyx_k_WaveTools_py_Reconstruction_is_e), 0, 0, 1, 0},
23439  {&__pyx_kp_s_WaveTools_py_Set_parameters_for, __pyx_k_WaveTools_py_Set_parameters_for, sizeof(__pyx_k_WaveTools_py_Set_parameters_for), 0, 0, 1, 0},
23440  {&__pyx_kp_s_WaveTools_py_Timeseries_file_s_m, __pyx_k_WaveTools_py_Timeseries_file_s_m, sizeof(__pyx_k_WaveTools_py_Timeseries_file_s_m), 0, 0, 1, 0},
23441  {&__pyx_kp_s_WaveTools_py_Using_s_windows_for, __pyx_k_WaveTools_py_Using_s_windows_for, sizeof(__pyx_k_WaveTools_py_Using_s_windows_for), 0, 0, 1, 0},
23442  {&__pyx_kp_s_WaveTools_py_Wavelenght_is_not_d, __pyx_k_WaveTools_py_Wavelenght_is_not_d, sizeof(__pyx_k_WaveTools_py_Wavelenght_is_not_d), 0, 0, 1, 0},
23443  {&__pyx_kp_s_WaveTools_py_Window_handover_is, __pyx_k_WaveTools_py_Window_handover_is, sizeof(__pyx_k_WaveTools_py_Window_handover_is), 0, 0, 1, 0},
23444  {&__pyx_kp_s_WaveTools_py_Wrong_function_type, __pyx_k_WaveTools_py_Wrong_function_type, sizeof(__pyx_k_WaveTools_py_Wrong_function_type), 0, 0, 1, 0},
23445  {&__pyx_kp_s_WaveTools_py_meanVelocity_should, __pyx_k_WaveTools_py_meanVelocity_should, sizeof(__pyx_k_WaveTools_py_meanVelocity_should), 0, 0, 1, 0},
23446  {&__pyx_kp_s_WaveTools_py_performing_a_direct, __pyx_k_WaveTools_py_performing_a_direct, sizeof(__pyx_k_WaveTools_py_performing_a_direct), 0, 0, 1, 0},
23447  {&__pyx_kp_s_WaveTools_py_performing_series_d, __pyx_k_WaveTools_py_performing_series_d, sizeof(__pyx_k_WaveTools_py_performing_series_d), 0, 0, 1, 0},
23448  {&__pyx_kp_s_WaveTools_py_phi_argument_must_b, __pyx_k_WaveTools_py_phi_argument_must_b, sizeof(__pyx_k_WaveTools_py_phi_argument_must_b), 0, 0, 1, 0},
23449  {&__pyx_kp_s_WaveTools_py_phi_in_DirectionalW, __pyx_k_WaveTools_py_phi_in_DirectionalW, sizeof(__pyx_k_WaveTools_py_phi_in_DirectionalW), 0, 0, 1, 0},
23450  {&__pyx_kp_s_Wave_direction_is_not_perpendicu, __pyx_k_Wave_direction_is_not_perpendicu, sizeof(__pyx_k_Wave_direction_is_not_perpendicu), 0, 0, 1, 0},
23451  {&__pyx_kp_s_Wavetools_py_Provide_valid_depth, __pyx_k_Wavetools_py_Provide_valid_depth, sizeof(__pyx_k_Wavetools_py_Provide_valid_depth), 0, 0, 1, 0},
23452  {&__pyx_kp_s_Wavetools_py_Stopping_simulation, __pyx_k_Wavetools_py_Stopping_simulation, sizeof(__pyx_k_Wavetools_py_Stopping_simulation), 0, 0, 1, 0},
23453  {&__pyx_n_s_Window, __pyx_k_Window, sizeof(__pyx_k_Window), 0, 0, 1, 1},
23454  {&__pyx_kp_s_Wrong_wavetype_given_Valid_wavet, __pyx_k_Wrong_wavetype_given_Valid_wavet, sizeof(__pyx_k_Wrong_wavetype_given_Valid_wavet), 0, 0, 1, 0},
23455  {&__pyx_n_s_Y, __pyx_k_Y, sizeof(__pyx_k_Y), 0, 0, 1, 1},
23456  {&__pyx_n_s_Ycoeff, __pyx_k_Ycoeff, sizeof(__pyx_k_Ycoeff), 0, 0, 1, 1},
23457  {&__pyx_n_s_Z, __pyx_k_Z, sizeof(__pyx_k_Z), 0, 0, 1, 1},
23458  {&__pyx_kp_s__82, __pyx_k__82, sizeof(__pyx_k__82), 0, 0, 1, 0},
23459  {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
23460  {&__pyx_n_s_aa, __pyx_k_aa, sizeof(__pyx_k_aa), 0, 0, 1, 1},
23461  {&__pyx_n_s_ai, __pyx_k_ai, sizeof(__pyx_k_ai), 0, 0, 1, 1},
23462  {&__pyx_n_s_aiDirs, __pyx_k_aiDirs, sizeof(__pyx_k_aiDirs), 0, 0, 1, 1},
23463  {&__pyx_n_s_aiM, __pyx_k_aiM, sizeof(__pyx_k_aiM), 0, 0, 1, 1},
23464  {&__pyx_n_s_amp, __pyx_k_amp, sizeof(__pyx_k_amp), 0, 0, 1, 1},
23465  {&__pyx_n_s_amplitude, __pyx_k_amplitude, sizeof(__pyx_k_amplitude), 0, 0, 1, 1},
23466  {&__pyx_n_s_append, __pyx_k_append, sizeof(__pyx_k_append), 0, 0, 1, 1},
23467  {&__pyx_n_s_array, __pyx_k_array, sizeof(__pyx_k_array), 0, 0, 1, 1},
23468  {&__pyx_n_s_bandFactor, __pyx_k_bandFactor, sizeof(__pyx_k_bandFactor), 0, 0, 1, 1},
23469  {&__pyx_n_s_bj, __pyx_k_bj, sizeof(__pyx_k_bj), 0, 0, 1, 1},
23470  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
23471  {&__pyx_n_s_cmath, __pyx_k_cmath, sizeof(__pyx_k_cmath), 0, 0, 1, 1},
23472  {&__pyx_n_s_cos, __pyx_k_cos, sizeof(__pyx_k_cos), 0, 0, 1, 1},
23473  {&__pyx_n_s_cos2s, __pyx_k_cos2s, sizeof(__pyx_k_cos2s), 0, 0, 1, 1},
23474  {&__pyx_n_s_cosh, __pyx_k_cosh, sizeof(__pyx_k_cosh), 0, 0, 1, 1},
23475  {&__pyx_n_s_costap, __pyx_k_costap, sizeof(__pyx_k_costap), 0, 0, 1, 1},
23476  {&__pyx_kp_s_csv, __pyx_k_csv, sizeof(__pyx_k_csv), 0, 0, 1, 0},
23477  {&__pyx_n_s_cut, __pyx_k_cut, sizeof(__pyx_k_cut), 0, 0, 1, 1},
23478  {&__pyx_n_s_cutoff, __pyx_k_cutoff, sizeof(__pyx_k_cutoff), 0, 0, 1, 1},
23479  {&__pyx_n_s_d, __pyx_k_d, sizeof(__pyx_k_d), 0, 0, 1, 1},
23480  {&__pyx_n_s_decomp, __pyx_k_decomp, sizeof(__pyx_k_decomp), 0, 0, 1, 1},
23481  {&__pyx_n_s_decompose_tseries, __pyx_k_decompose_tseries, sizeof(__pyx_k_decompose_tseries), 0, 0, 1, 1},
23482  {&__pyx_n_s_decompose_window, __pyx_k_decompose_window, sizeof(__pyx_k_decompose_window), 0, 0, 1, 1},
23483  {&__pyx_n_s_delimiter, __pyx_k_delimiter, sizeof(__pyx_k_delimiter), 0, 0, 1, 1},
23484  {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1},
23485  {&__pyx_n_s_df, __pyx_k_df, sizeof(__pyx_k_df), 0, 0, 1, 1},
23486  {&__pyx_n_s_diff, __pyx_k_diff, sizeof(__pyx_k_diff), 0, 0, 1, 1},
23487  {&__pyx_n_s_dirCheck, __pyx_k_dirCheck, sizeof(__pyx_k_dirCheck), 0, 0, 1, 1},
23488  {&__pyx_n_s_dircheck, __pyx_k_dircheck, sizeof(__pyx_k_dircheck), 0, 0, 1, 1},
23489  {&__pyx_n_s_directions, __pyx_k_directions, sizeof(__pyx_k_directions), 0, 0, 1, 1},
23490  {&__pyx_n_s_dispersion, __pyx_k_dispersion, sizeof(__pyx_k_dispersion), 0, 0, 1, 1},
23491  {&__pyx_n_s_doInterp, __pyx_k_doInterp, sizeof(__pyx_k_doInterp), 0, 0, 1, 1},
23492  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
23493  {&__pyx_n_s_dt, __pyx_k_dt, sizeof(__pyx_k_dt), 0, 0, 1, 1},
23494  {&__pyx_n_s_dt_temp, __pyx_k_dt_temp, sizeof(__pyx_k_dt_temp), 0, 0, 1, 1},
23495  {&__pyx_n_s_dth, __pyx_k_dth, sizeof(__pyx_k_dth), 0, 0, 1, 1},
23496  {&__pyx_n_s_eta, __pyx_k_eta, sizeof(__pyx_k_eta), 0, 0, 1, 1},
23497  {&__pyx_n_s_etaDirect, __pyx_k_etaDirect, sizeof(__pyx_k_etaDirect), 0, 0, 1, 1},
23498  {&__pyx_n_s_etaWindow, __pyx_k_etaWindow, sizeof(__pyx_k_etaWindow), 0, 0, 1, 1},
23499  {&__pyx_n_s_eta_mode, __pyx_k_eta_mode, sizeof(__pyx_k_eta_mode), 0, 0, 1, 1},
23500  {&__pyx_n_s_exit, __pyx_k_exit, sizeof(__pyx_k_exit), 0, 0, 1, 1},
23501  {&__pyx_n_s_exp, __pyx_k_exp, sizeof(__pyx_k_exp), 0, 0, 1, 1},
23502  {&__pyx_n_s_f, __pyx_k_f, sizeof(__pyx_k_f), 0, 0, 1, 1},
23503  {&__pyx_n_s_f0, __pyx_k_f0, sizeof(__pyx_k_f0), 0, 0, 1, 1},
23504  {&__pyx_n_s_fft, __pyx_k_fft, sizeof(__pyx_k_fft), 0, 0, 1, 1},
23505  {&__pyx_n_s_fft_x, __pyx_k_fft_x, sizeof(__pyx_k_fft_x), 0, 0, 1, 1},
23506  {&__pyx_n_s_fftfreq, __pyx_k_fftfreq, sizeof(__pyx_k_fftfreq), 0, 0, 1, 1},
23507  {&__pyx_n_s_fi, __pyx_k_fi, sizeof(__pyx_k_fi), 0, 0, 1, 1},
23508  {&__pyx_n_s_fid, __pyx_k_fid, sizeof(__pyx_k_fid), 0, 0, 1, 1},
23509  {&__pyx_n_s_filetype, __pyx_k_filetype, sizeof(__pyx_k_filetype), 0, 0, 1, 1},
23510  {&__pyx_n_s_fim, __pyx_k_fim, sizeof(__pyx_k_fim), 0, 0, 1, 1},
23511  {&__pyx_n_s_fim_tmp, __pyx_k_fim_tmp, sizeof(__pyx_k_fim_tmp), 0, 0, 1, 1},
23512  {&__pyx_n_s_findWindow, __pyx_k_findWindow, sizeof(__pyx_k_findWindow), 0, 0, 1, 1},
23513  {&__pyx_n_s_fmax, __pyx_k_fmax, sizeof(__pyx_k_fmax), 0, 0, 1, 1},
23514  {&__pyx_n_s_fmin, __pyx_k_fmin, sizeof(__pyx_k_fmin), 0, 0, 1, 1},
23515  {&__pyx_n_s_fp, __pyx_k_fp, sizeof(__pyx_k_fp), 0, 0, 1, 1},
23516  {&__pyx_n_s_freq, __pyx_k_freq, sizeof(__pyx_k_freq), 0, 0, 1, 1},
23517  {&__pyx_n_s_fun, __pyx_k_fun, sizeof(__pyx_k_fun), 0, 0, 1, 1},
23518  {&__pyx_n_s_func, __pyx_k_func, sizeof(__pyx_k_func), 0, 0, 1, 1},
23519  {&__pyx_n_s_funcName, __pyx_k_funcName, sizeof(__pyx_k_funcName), 0, 0, 1, 1},
23520  {&__pyx_n_s_funcNames, __pyx_k_funcNames, sizeof(__pyx_k_funcNames), 0, 0, 1, 1},
23521  {&__pyx_n_s_func_ret, __pyx_k_func_ret, sizeof(__pyx_k_func_ret), 0, 0, 1, 1},
23522  {&__pyx_n_s_g, __pyx_k_g, sizeof(__pyx_k_g), 0, 0, 1, 1},
23523  {&__pyx_n_s_gAbs, __pyx_k_gAbs, sizeof(__pyx_k_gAbs), 0, 0, 1, 1},
23524  {&__pyx_n_s_gamma, __pyx_k_gamma, sizeof(__pyx_k_gamma), 0, 0, 1, 1},
23525  {&__pyx_n_s_handover, __pyx_k_handover, sizeof(__pyx_k_handover), 0, 0, 1, 1},
23526  {&__pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_k_home_cekees_proteus_proteus_Wav, sizeof(__pyx_k_home_cekees_proteus_proteus_Wav), 0, 0, 1, 0},
23527  {&__pyx_n_s_i, __pyx_k_i, sizeof(__pyx_k_i), 0, 0, 1, 1},
23528  {&__pyx_n_s_iend, __pyx_k_iend, sizeof(__pyx_k_iend), 0, 0, 1, 1},
23529  {&__pyx_n_s_ii, __pyx_k_ii, sizeof(__pyx_k_ii), 0, 0, 1, 1},
23530  {&__pyx_n_s_imax, __pyx_k_imax, sizeof(__pyx_k_imax), 0, 0, 1, 1},
23531  {&__pyx_n_s_imin, __pyx_k_imin, sizeof(__pyx_k_imin), 0, 0, 1, 1},
23532  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
23533  {&__pyx_n_s_init, __pyx_k_init, sizeof(__pyx_k_init), 0, 0, 1, 1},
23534  {&__pyx_n_s_interp, __pyx_k_interp, sizeof(__pyx_k_interp), 0, 0, 1, 1},
23535  {&__pyx_n_s_ipeak, __pyx_k_ipeak, sizeof(__pyx_k_ipeak), 0, 0, 1, 1},
23536  {&__pyx_n_s_ispan1, __pyx_k_ispan1, sizeof(__pyx_k_ispan1), 0, 0, 1, 1},
23537  {&__pyx_n_s_ispan2, __pyx_k_ispan2, sizeof(__pyx_k_ispan2), 0, 0, 1, 1},
23538  {&__pyx_n_s_jj, __pyx_k_jj, sizeof(__pyx_k_jj), 0, 0, 1, 1},
23539  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
23540  {&__pyx_n_s_kAbs, __pyx_k_kAbs, sizeof(__pyx_k_kAbs), 0, 0, 1, 1},
23541  {&__pyx_n_s_kDir, __pyx_k_kDir, sizeof(__pyx_k_kDir), 0, 0, 1, 1},
23542  {&__pyx_n_s_kDirM, __pyx_k_kDirM, sizeof(__pyx_k_kDirM), 0, 0, 1, 1},
23543  {&__pyx_n_s_kDiri, __pyx_k_kDiri, sizeof(__pyx_k_kDiri), 0, 0, 1, 1},
23544  {&__pyx_n_s_kdir, __pyx_k_kdir, sizeof(__pyx_k_kdir), 0, 0, 1, 1},
23545  {&__pyx_n_s_ki, __pyx_k_ki, sizeof(__pyx_k_ki), 0, 0, 1, 1},
23546  {&__pyx_n_s_kiM, __pyx_k_kiM, sizeof(__pyx_k_kiM), 0, 0, 1, 1},
23547  {&__pyx_n_s_kk, __pyx_k_kk, sizeof(__pyx_k_kk), 0, 0, 1, 1},
23548  {&__pyx_n_s_kmode, __pyx_k_kmode, sizeof(__pyx_k_kmode), 0, 0, 1, 1},
23549  {&__pyx_n_s_knownWaveTypes, __pyx_k_knownWaveTypes, sizeof(__pyx_k_knownWaveTypes), 0, 0, 1, 1},
23550  {&__pyx_n_s_l, __pyx_k_l, sizeof(__pyx_k_l), 0, 0, 1, 1},
23551  {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1},
23552  {&__pyx_n_s_linspace, __pyx_k_linspace, sizeof(__pyx_k_linspace), 0, 0, 1, 1},
23553  {&__pyx_n_s_loadExistingFunction, __pyx_k_loadExistingFunction, sizeof(__pyx_k_loadExistingFunction), 0, 0, 1, 1},
23554  {&__pyx_n_s_loadtxt, __pyx_k_loadtxt, sizeof(__pyx_k_loadtxt), 0, 0, 1, 1},
23555  {&__pyx_n_s_log, __pyx_k_log, sizeof(__pyx_k_log), 0, 0, 1, 1},
23556  {&__pyx_n_s_logEvent, __pyx_k_logEvent, sizeof(__pyx_k_logEvent), 0, 0, 1, 1},
23557  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
23558  {&__pyx_n_s_math, __pyx_k_math, sizeof(__pyx_k_math), 0, 0, 1, 1},
23559  {&__pyx_n_s_max, __pyx_k_max, sizeof(__pyx_k_max), 0, 0, 1, 1},
23560  {&__pyx_n_s_mean, __pyx_k_mean, sizeof(__pyx_k_mean), 0, 0, 1, 1},
23561  {&__pyx_n_s_meanVelocity, __pyx_k_meanVelocity, sizeof(__pyx_k_meanVelocity), 0, 0, 1, 1},
23562  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
23563  {&__pyx_n_s_mitsuyasu, __pyx_k_mitsuyasu, sizeof(__pyx_k_mitsuyasu), 0, 0, 1, 1},
23564  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
23565  {&__pyx_n_s_mwl, __pyx_k_mwl, sizeof(__pyx_k_mwl), 0, 0, 1, 1},
23566  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
23567  {&__pyx_n_s_ncols, __pyx_k_ncols, sizeof(__pyx_k_ncols), 0, 0, 1, 1},
23568  {&__pyx_n_s_nfft, __pyx_k_nfft, sizeof(__pyx_k_nfft), 0, 0, 1, 1},
23569  {&__pyx_n_s_niter, __pyx_k_niter, sizeof(__pyx_k_niter), 0, 0, 1, 1},
23570  {&__pyx_n_s_nn, __pyx_k_nn, sizeof(__pyx_k_nn), 0, 0, 1, 1},
23571  {&__pyx_n_s_normIntegral, __pyx_k_normIntegral, sizeof(__pyx_k_normIntegral), 0, 0, 1, 1},
23572  {&__pyx_n_s_np, __pyx_k_np, sizeof(__pyx_k_np), 0, 0, 1, 1},
23573  {&__pyx_n_s_npoints, __pyx_k_npoints, sizeof(__pyx_k_npoints), 0, 0, 1, 1},
23574  {&__pyx_n_s_numpy, __pyx_k_numpy, sizeof(__pyx_k_numpy), 0, 0, 1, 1},
23575  {&__pyx_n_s_omega, __pyx_k_omega, sizeof(__pyx_k_omega), 0, 0, 1, 1},
23576  {&__pyx_n_s_omega0, __pyx_k_omega0, sizeof(__pyx_k_omega0), 0, 0, 1, 1},
23577  {&__pyx_n_s_omegaM, __pyx_k_omegaM, sizeof(__pyx_k_omegaM), 0, 0, 1, 1},
23578  {&__pyx_n_s_ones, __pyx_k_ones, sizeof(__pyx_k_ones), 0, 0, 1, 1},
23579  {&__pyx_n_s_open, __pyx_k_open, sizeof(__pyx_k_open), 0, 0, 1, 1},
23580  {&__pyx_n_s_overlap, __pyx_k_overlap, sizeof(__pyx_k_overlap), 0, 0, 1, 1},
23581  {&__pyx_n_s_period, __pyx_k_period, sizeof(__pyx_k_period), 0, 0, 1, 1},
23582  {&__pyx_n_s_phase, __pyx_k_phase, sizeof(__pyx_k_phase), 0, 0, 1, 1},
23583  {&__pyx_n_s_phi, __pyx_k_phi, sizeof(__pyx_k_phi), 0, 0, 1, 1},
23584  {&__pyx_n_s_phi0, __pyx_k_phi0, sizeof(__pyx_k_phi0), 0, 0, 1, 1},
23585  {&__pyx_n_s_phiDirs, __pyx_k_phiDirs, sizeof(__pyx_k_phiDirs), 0, 0, 1, 1},
23586  {&__pyx_n_s_phiM, __pyx_k_phiM, sizeof(__pyx_k_phiM), 0, 0, 1, 1},
23587  {&__pyx_n_s_phiSymm, __pyx_k_phiSymm, sizeof(__pyx_k_phiSymm), 0, 0, 1, 1},
23588  {&__pyx_n_s_pi, __pyx_k_pi, sizeof(__pyx_k_pi), 0, 0, 1, 1},
23589  {&__pyx_n_s_pp, __pyx_k_pp, sizeof(__pyx_k_pp), 0, 0, 1, 1},
23590  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
23591  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
23592  {&__pyx_n_s_r, __pyx_k_r, sizeof(__pyx_k_r), 0, 0, 1, 1},
23593  {&__pyx_n_s_rand, __pyx_k_rand, sizeof(__pyx_k_rand), 0, 0, 1, 1},
23594  {&__pyx_n_s_random, __pyx_k_random, sizeof(__pyx_k_random), 0, 0, 1, 1},
23595  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
23596  {&__pyx_n_s_real, __pyx_k_real, sizeof(__pyx_k_real), 0, 0, 1, 1},
23597  {&__pyx_n_s_rec_direct, __pyx_k_rec_direct, sizeof(__pyx_k_rec_direct), 0, 0, 1, 1},
23598  {&__pyx_n_s_reduceToIntervals, __pyx_k_reduceToIntervals, sizeof(__pyx_k_reduceToIntervals), 0, 0, 1, 1},
23599  {&__pyx_n_s_results, __pyx_k_results, sizeof(__pyx_k_results), 0, 0, 1, 1},
23600  {&__pyx_n_s_returnRectangles, __pyx_k_returnRectangles, sizeof(__pyx_k_returnRectangles), 0, 0, 1, 1},
23601  {&__pyx_n_s_returnRectangles3D, __pyx_k_returnRectangles3D, sizeof(__pyx_k_returnRectangles3D), 0, 0, 1, 1},
23602  {&__pyx_n_s_rotation3D, __pyx_k_rotation3D, sizeof(__pyx_k_rotation3D), 0, 0, 1, 1},
23603  {&__pyx_n_s_rr, __pyx_k_rr, sizeof(__pyx_k_rr), 0, 0, 1, 1},
23604  {&__pyx_n_s_s, __pyx_k_s, sizeof(__pyx_k_s), 0, 0, 1, 1},
23605  {&__pyx_n_s_self, __pyx_k_self, sizeof(__pyx_k_self), 0, 0, 1, 1},
23606  {&__pyx_n_s_setDirVector, __pyx_k_setDirVector, sizeof(__pyx_k_setDirVector), 0, 0, 1, 1},
23607  {&__pyx_n_s_setVertDir, __pyx_k_setVertDir, sizeof(__pyx_k_setVertDir), 0, 0, 1, 1},
23608  {&__pyx_n_s_setup, __pyx_k_setup, sizeof(__pyx_k_setup), 0, 0, 1, 1},
23609  {&__pyx_n_s_shape, __pyx_k_shape, sizeof(__pyx_k_shape), 0, 0, 1, 1},
23610  {&__pyx_n_s_sigma, __pyx_k_sigma, sizeof(__pyx_k_sigma), 0, 0, 1, 1},
23611  {&__pyx_n_s_sigmaReturn, __pyx_k_sigmaReturn, sizeof(__pyx_k_sigmaReturn), 0, 0, 1, 1},
23612  {&__pyx_n_s_sin, __pyx_k_sin, sizeof(__pyx_k_sin), 0, 0, 1, 1},
23613  {&__pyx_n_s_sinh, __pyx_k_sinh, sizeof(__pyx_k_sinh), 0, 0, 1, 1},
23614  {&__pyx_n_s_skiprows, __pyx_k_skiprows, sizeof(__pyx_k_skiprows), 0, 0, 1, 1},
23615  {&__pyx_n_s_smax, __pyx_k_smax, sizeof(__pyx_k_smax), 0, 0, 1, 1},
23616  {&__pyx_n_s_span, __pyx_k_span, sizeof(__pyx_k_span), 0, 0, 1, 1},
23617  {&__pyx_n_s_spec_fun, __pyx_k_spec_fun, sizeof(__pyx_k_spec_fun), 0, 0, 1, 1},
23618  {&__pyx_n_s_spectName, __pyx_k_spectName, sizeof(__pyx_k_spectName), 0, 0, 1, 1},
23619  {&__pyx_n_s_spectral_params, __pyx_k_spectral_params, sizeof(__pyx_k_spectral_params), 0, 0, 1, 1},
23620  {&__pyx_n_s_spreadName, __pyx_k_spreadName, sizeof(__pyx_k_spreadName), 0, 0, 1, 1},
23621  {&__pyx_n_s_spread_fun, __pyx_k_spread_fun, sizeof(__pyx_k_spread_fun), 0, 0, 1, 1},
23622  {&__pyx_n_s_spread_params, __pyx_k_spread_params, sizeof(__pyx_k_spread_params), 0, 0, 1, 1},
23623  {&__pyx_n_s_sqrt, __pyx_k_sqrt, sizeof(__pyx_k_sqrt), 0, 0, 1, 1},
23624  {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
23625  {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1},
23626  {&__pyx_n_s_t, __pyx_k_t, sizeof(__pyx_k_t), 0, 0, 1, 1},
23627  {&__pyx_n_s_t0, __pyx_k_t0, sizeof(__pyx_k_t0), 0, 0, 1, 1},
23628  {&__pyx_n_s_tanh, __pyx_k_tanh, sizeof(__pyx_k_tanh), 0, 0, 1, 1},
23629  {&__pyx_n_s_tdata, __pyx_k_tdata, sizeof(__pyx_k_tdata), 0, 0, 1, 1},
23630  {&__pyx_n_s_temp_array, __pyx_k_temp_array, sizeof(__pyx_k_temp_array), 0, 0, 1, 1},
23631  {&__pyx_n_s_term, __pyx_k_term, sizeof(__pyx_k_term), 0, 0, 1, 1},
23632  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
23633  {&__pyx_n_s_tfirst, __pyx_k_tfirst, sizeof(__pyx_k_tfirst), 0, 0, 1, 1},
23634  {&__pyx_n_s_th, __pyx_k_th, sizeof(__pyx_k_th), 0, 0, 1, 1},
23635  {&__pyx_n_s_theta, __pyx_k_theta, sizeof(__pyx_k_theta), 0, 0, 1, 1},
23636  {&__pyx_n_s_theta_m, __pyx_k_theta_m, sizeof(__pyx_k_theta_m), 0, 0, 1, 1},
23637  {&__pyx_n_s_thetas, __pyx_k_thetas, sizeof(__pyx_k_thetas), 0, 0, 1, 1},
23638  {&__pyx_n_s_time, __pyx_k_time, sizeof(__pyx_k_time), 0, 0, 1, 1},
23639  {&__pyx_n_s_timeSeriesFile, __pyx_k_timeSeriesFile, sizeof(__pyx_k_timeSeriesFile), 0, 0, 1, 1},
23640  {&__pyx_n_s_timeSeriesPosition, __pyx_k_timeSeriesPosition, sizeof(__pyx_k_timeSeriesPosition), 0, 0, 1, 1},
23641  {&__pyx_n_s_time_temp, __pyx_k_time_temp, sizeof(__pyx_k_time_temp), 0, 0, 1, 1},
23642  {&__pyx_n_s_tlast, __pyx_k_tlast, sizeof(__pyx_k_tlast), 0, 0, 1, 1},
23643  {&__pyx_n_s_tlength, __pyx_k_tlength, sizeof(__pyx_k_tlength), 0, 0, 1, 1},
23644  {&__pyx_n_s_tma, __pyx_k_tma, sizeof(__pyx_k_tma), 0, 0, 1, 1},
23645  {&__pyx_n_s_tolist, __pyx_k_tolist, sizeof(__pyx_k_tolist), 0, 0, 1, 1},
23646  {&__pyx_n_s_tophat, __pyx_k_tophat, sizeof(__pyx_k_tophat), 0, 0, 1, 1},
23647  {&__pyx_n_s_tstart, __pyx_k_tstart, sizeof(__pyx_k_tstart), 0, 0, 1, 1},
23648  {&__pyx_n_s_tt, __pyx_k_tt, sizeof(__pyx_k_tt), 0, 0, 1, 1},
23649  {&__pyx_kp_s_txt, __pyx_k_txt, sizeof(__pyx_k_txt), 0, 0, 1, 0},
23650  {&__pyx_n_s_u, __pyx_k_u, sizeof(__pyx_k_u), 0, 0, 1, 1},
23651  {&__pyx_n_s_uDirect, __pyx_k_uDirect, sizeof(__pyx_k_uDirect), 0, 0, 1, 1},
23652  {&__pyx_n_s_uWindow, __pyx_k_uWindow, sizeof(__pyx_k_uWindow), 0, 0, 1, 1},
23653  {&__pyx_n_s_v1, __pyx_k_v1, sizeof(__pyx_k_v1), 0, 0, 1, 1},
23654  {&__pyx_n_s_v2, __pyx_k_v2, sizeof(__pyx_k_v2), 0, 0, 1, 1},
23655  {&__pyx_n_s_vDir, __pyx_k_vDir, sizeof(__pyx_k_vDir), 0, 0, 1, 1},
23656  {&__pyx_n_s_validFunctions, __pyx_k_validFunctions, sizeof(__pyx_k_validFunctions), 0, 0, 1, 1},
23657  {&__pyx_n_s_validSpectra, __pyx_k_validSpectra, sizeof(__pyx_k_validSpectra), 0, 0, 1, 1},
23658  {&__pyx_n_s_validSpread, __pyx_k_validSpread, sizeof(__pyx_k_validSpread), 0, 0, 1, 1},
23659  {&__pyx_n_s_validWindows, __pyx_k_validWindows, sizeof(__pyx_k_validWindows), 0, 0, 1, 1},
23660  {&__pyx_n_s_vector, __pyx_k_vector, sizeof(__pyx_k_vector), 0, 0, 1, 1},
23661  {&__pyx_n_s_vel_mode, __pyx_k_vel_mode, sizeof(__pyx_k_vel_mode), 0, 0, 1, 1},
23662  {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1},
23663  {&__pyx_n_s_w_aux, __pyx_k_w_aux, sizeof(__pyx_k_w_aux), 0, 0, 1, 1},
23664  {&__pyx_n_s_waveDir, __pyx_k_waveDir, sizeof(__pyx_k_waveDir), 0, 0, 1, 1},
23665  {&__pyx_n_s_waveDir0, __pyx_k_waveDir0, sizeof(__pyx_k_waveDir0), 0, 0, 1, 1},
23666  {&__pyx_n_s_waveDirs, __pyx_k_waveDirs, sizeof(__pyx_k_waveDirs), 0, 0, 1, 1},
23667  {&__pyx_n_s_waveHeight, __pyx_k_waveHeight, sizeof(__pyx_k_waveHeight), 0, 0, 1, 1},
23668  {&__pyx_n_s_waveType, __pyx_k_waveType, sizeof(__pyx_k_waveType), 0, 0, 1, 1},
23669  {&__pyx_n_s_wavelength, __pyx_k_wavelength, sizeof(__pyx_k_wavelength), 0, 0, 1, 1},
23670  {&__pyx_n_s_where, __pyx_k_where, sizeof(__pyx_k_where), 0, 0, 1, 1},
23671  {&__pyx_n_s_wind, __pyx_k_wind, sizeof(__pyx_k_wind), 0, 0, 1, 1},
23672  {&__pyx_n_s_wind_filt, __pyx_k_wind_filt, sizeof(__pyx_k_wind_filt), 0, 0, 1, 1},
23673  {&__pyx_n_s_windowName, __pyx_k_windowName, sizeof(__pyx_k_windowName), 0, 0, 1, 1},
23674  {&__pyx_n_s_window_params, __pyx_k_window_params, sizeof(__pyx_k_window_params), 0, 0, 1, 1},
23675  {&__pyx_n_s_windows_handover, __pyx_k_windows_handover, sizeof(__pyx_k_windows_handover), 0, 0, 1, 1},
23676  {&__pyx_n_s_windows_rec, __pyx_k_windows_rec, sizeof(__pyx_k_windows_rec), 0, 0, 1, 1},
23677  {&__pyx_n_s_wmode, __pyx_k_wmode, sizeof(__pyx_k_wmode), 0, 0, 1, 1},
23678  {&__pyx_n_s_ww, __pyx_k_ww, sizeof(__pyx_k_ww), 0, 0, 1, 1},
23679  {&__pyx_n_s_x, __pyx_k_x, sizeof(__pyx_k_x), 0, 0, 1, 1},
23680  {&__pyx_n_s_x0, __pyx_k_x0, sizeof(__pyx_k_x0), 0, 0, 1, 1},
23681  {&__pyx_n_s_x1, __pyx_k_x1, sizeof(__pyx_k_x1), 0, 0, 1, 1},
23682  {&__pyx_n_s_y, __pyx_k_y, sizeof(__pyx_k_y), 0, 0, 1, 1},
23683  {&__pyx_n_s_y0, __pyx_k_y0, sizeof(__pyx_k_y0), 0, 0, 1, 1},
23684  {&__pyx_n_s_z0, __pyx_k_z0, sizeof(__pyx_k_z0), 0, 0, 1, 1},
23685  {&__pyx_n_s_zeros, __pyx_k_zeros, sizeof(__pyx_k_zeros), 0, 0, 1, 1},
23686  {&__pyx_n_s_zip, __pyx_k_zip, sizeof(__pyx_k_zip), 0, 0, 1, 1},
23687  {0, 0, 0, 0, 0, 0, 0}
23688 };
23689 static int __Pyx_InitCachedBuiltins(void) {
23690  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23691  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23692  __pyx_builtin_open = __Pyx_GetBuiltinName(__pyx_n_s_open); if (!__pyx_builtin_open) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23693  __pyx_builtin_max = __Pyx_GetBuiltinName(__pyx_n_s_max); if (!__pyx_builtin_max) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 868; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23694  __pyx_builtin_zip = __Pyx_GetBuiltinName(__pyx_n_s_zip); if (!__pyx_builtin_zip) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 963; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23695  return 0;
23696  __pyx_L1_error:;
23697  return -1;
23698 }
23699 
23700 static int __Pyx_InitCachedConstants(void) {
23701  __Pyx_RefNannyDeclarations
23702  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
23703 
23704  /* "WaveTools.pyx":34
23705  * if funcName not in funcNames:
23706  * logEvent("WaveTools.py: Wrong function type (%s) given: Valid wavetypes are %s" %(funcName,funcNames), level=0)
23707  * sys.exit(1) # <<<<<<<<<<<<<<
23708  * return func_ret
23709  *
23710  */
23711  __pyx_tuple_ = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23712  __Pyx_GOTREF(__pyx_tuple_);
23713  __Pyx_GIVEREF(__pyx_tuple_);
23714 
23715  /* "WaveTools.pyx":59
23716  * #print self.dircheck
23717  * if dircheck > 1e-10:
23718  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0) # <<<<<<<<<<<<<<
23719  * return sys.exit(1)
23720  * else:
23721  */
23722  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_s_Wave_direction_is_not_perpendicu); if (unlikely(!__pyx_tuple__2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23723  __Pyx_GOTREF(__pyx_tuple__2);
23724  __Pyx_GIVEREF(__pyx_tuple__2);
23725 
23726  /* "WaveTools.pyx":60
23727  * if dircheck > 1e-10:
23728  * logEvent("Wave direction is not perpendicular to gravity vector. Check input",level=0)
23729  * return sys.exit(1) # <<<<<<<<<<<<<<
23730  * else:
23731  * return None
23732  */
23733  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23734  __Pyx_GOTREF(__pyx_tuple__3);
23735  __Pyx_GIVEREF(__pyx_tuple__3);
23736 
23737  /* "WaveTools.pyx":70
23738  * param: df : dx constant step of array [-]
23739  * """
23740  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist() # <<<<<<<<<<<<<<
23741  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
23742  * def returnRectangles(a,x):
23743  */
23744  __pyx_slice__4 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23745  __Pyx_GOTREF(__pyx_slice__4);
23746  __Pyx_GIVEREF(__pyx_slice__4);
23747  __pyx_slice__5 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23748  __Pyx_GOTREF(__pyx_slice__5);
23749  __Pyx_GIVEREF(__pyx_slice__5);
23750 
23751  /* "WaveTools.pyx":77
23752  * param: x : x- coordinate [-]
23753  * """
23754  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1]) # <<<<<<<<<<<<<<
23755  * def returnRectangles3D(a,x,y):
23756  * """ Returns \delta y of y(x,z) using the rectangle method
23757  */
23758  __pyx_slice__6 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23759  __Pyx_GOTREF(__pyx_slice__6);
23760  __Pyx_GIVEREF(__pyx_slice__6);
23761  __pyx_slice__7 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23762  __Pyx_GOTREF(__pyx_slice__7);
23763  __Pyx_GIVEREF(__pyx_slice__7);
23764  __pyx_slice__8 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23765  __Pyx_GOTREF(__pyx_slice__8);
23766  __Pyx_GIVEREF(__pyx_slice__8);
23767  __pyx_slice__9 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23768  __Pyx_GOTREF(__pyx_slice__9);
23769  __Pyx_GIVEREF(__pyx_slice__9);
23770 
23771  /* "WaveTools.pyx":85
23772  * param: y : y- coordinate [-]
23773  * """
23774  * ai = 0.5*(a[1:,:]+a[:-1,:]) # <<<<<<<<<<<<<<
23775  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
23776  * for ii in range(len(x)-1):
23777  */
23778  __pyx_slice__10 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23779  __Pyx_GOTREF(__pyx_slice__10);
23780  __Pyx_GIVEREF(__pyx_slice__10);
23781  __pyx_slice__11 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23782  __Pyx_GOTREF(__pyx_slice__11);
23783  __Pyx_GIVEREF(__pyx_slice__11);
23784  __pyx_tuple__12 = PyTuple_Pack(2, __pyx_slice__10, __pyx_slice__11); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23785  __Pyx_GOTREF(__pyx_tuple__12);
23786  __Pyx_GIVEREF(__pyx_tuple__12);
23787  __pyx_slice__13 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23788  __Pyx_GOTREF(__pyx_slice__13);
23789  __Pyx_GIVEREF(__pyx_slice__13);
23790  __pyx_slice__14 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23791  __Pyx_GOTREF(__pyx_slice__14);
23792  __Pyx_GIVEREF(__pyx_slice__14);
23793  __pyx_tuple__15 = PyTuple_Pack(2, __pyx_slice__13, __pyx_slice__14); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23794  __Pyx_GOTREF(__pyx_tuple__15);
23795  __Pyx_GIVEREF(__pyx_tuple__15);
23796 
23797  /* "WaveTools.pyx":86
23798  * """
23799  * ai = 0.5*(a[1:,:]+a[:-1,:])
23800  * ai = 0.5*(ai[:,1:]+ai[:,:-1]) # <<<<<<<<<<<<<<
23801  * for ii in range(len(x)-1):
23802  * ai[ii,:] *= (y[1:]-y[:-1])
23803  */
23804  __pyx_slice__16 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23805  __Pyx_GOTREF(__pyx_slice__16);
23806  __Pyx_GIVEREF(__pyx_slice__16);
23807  __pyx_slice__17 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23808  __Pyx_GOTREF(__pyx_slice__17);
23809  __Pyx_GIVEREF(__pyx_slice__17);
23810  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_slice__16, __pyx_slice__17); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23811  __Pyx_GOTREF(__pyx_tuple__18);
23812  __Pyx_GIVEREF(__pyx_tuple__18);
23813  __pyx_slice__19 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23814  __Pyx_GOTREF(__pyx_slice__19);
23815  __Pyx_GIVEREF(__pyx_slice__19);
23816  __pyx_slice__20 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23817  __Pyx_GOTREF(__pyx_slice__20);
23818  __Pyx_GIVEREF(__pyx_slice__20);
23819  __pyx_tuple__21 = PyTuple_Pack(2, __pyx_slice__19, __pyx_slice__20); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23820  __Pyx_GOTREF(__pyx_tuple__21);
23821  __Pyx_GIVEREF(__pyx_tuple__21);
23822 
23823  /* "WaveTools.pyx":88
23824  * ai = 0.5*(ai[:,1:]+ai[:,:-1])
23825  * for ii in range(len(x)-1):
23826  * ai[ii,:] *= (y[1:]-y[:-1]) # <<<<<<<<<<<<<<
23827  * for jj in range(len(y) - 1):
23828  * ai[:,jj] *= (x[1:]-x[:-1])
23829  */
23830  __pyx_slice__22 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23831  __Pyx_GOTREF(__pyx_slice__22);
23832  __Pyx_GIVEREF(__pyx_slice__22);
23833  __pyx_slice__23 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23834  __Pyx_GOTREF(__pyx_slice__23);
23835  __Pyx_GIVEREF(__pyx_slice__23);
23836  __pyx_slice__24 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__24)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23837  __Pyx_GOTREF(__pyx_slice__24);
23838  __Pyx_GIVEREF(__pyx_slice__24);
23839 
23840  /* "WaveTools.pyx":90
23841  * ai[ii,:] *= (y[1:]-y[:-1])
23842  * for jj in range(len(y) - 1):
23843  * ai[:,jj] *= (x[1:]-x[:-1]) # <<<<<<<<<<<<<<
23844  * return ai
23845  * def normIntegral(Sint,th):
23846  */
23847  __pyx_slice__25 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23848  __Pyx_GOTREF(__pyx_slice__25);
23849  __Pyx_GIVEREF(__pyx_slice__25);
23850  __pyx_slice__26 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__26)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23851  __Pyx_GOTREF(__pyx_slice__26);
23852  __Pyx_GIVEREF(__pyx_slice__26);
23853  __pyx_slice__27 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__27)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23854  __Pyx_GOTREF(__pyx_slice__27);
23855  __Pyx_GIVEREF(__pyx_slice__27);
23856 
23857  /* "WaveTools.pyx":166
23858  * if TMA:
23859  * if (depth == None):
23860  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum") # <<<<<<<<<<<<<<
23861  * logEvent("Wavetools:py. Stopping simulation")
23862  * sys.exit(1)
23863  */
23864  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_Wavetools_py_Provide_valid_depth); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23865  __Pyx_GOTREF(__pyx_tuple__28);
23866  __Pyx_GIVEREF(__pyx_tuple__28);
23867 
23868  /* "WaveTools.pyx":167
23869  * if (depth == None):
23870  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
23871  * logEvent("Wavetools:py. Stopping simulation") # <<<<<<<<<<<<<<
23872  * sys.exit(1)
23873  * k = dispersion(2*pi*f,depth)
23874  */
23875  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_Wavetools_py_Stopping_simulation); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23876  __Pyx_GOTREF(__pyx_tuple__29);
23877  __Pyx_GIVEREF(__pyx_tuple__29);
23878 
23879  /* "WaveTools.pyx":168
23880  * logEvent("Wavetools:py. Provide valid depth definition definition for TMA spectrum")
23881  * logEvent("Wavetools:py. Stopping simulation")
23882  * sys.exit(1) # <<<<<<<<<<<<<<
23883  * k = dispersion(2*pi*f,depth)
23884  * tma = np.tanh(k*depth)*np.tanh(k*depth)/(1.+ 2.*k*depth/np.sinh(2.*k*depth))
23885  */
23886  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23887  __Pyx_GOTREF(__pyx_tuple__30);
23888  __Pyx_GIVEREF(__pyx_tuple__30);
23889 
23890  /* "WaveTools.pyx":194
23891  * """
23892  * fun = np.zeros((len(theta),len(f)),)
23893  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
23894  * fun[:,ii] = np.cos(theta/2)**(2*s)
23895  * return fun
23896  */
23897  __pyx_slice__31 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__31)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23898  __Pyx_GOTREF(__pyx_slice__31);
23899  __Pyx_GIVEREF(__pyx_slice__31);
23900  __pyx_tuple__32 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__31); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23901  __Pyx_GOTREF(__pyx_tuple__32);
23902  __Pyx_GIVEREF(__pyx_tuple__32);
23903 
23904  /* "WaveTools.pyx":195
23905  * fun = np.zeros((len(theta),len(f)),)
23906  * for ii in range(len(fun[0,:])):
23907  * fun[:,ii] = np.cos(theta/2)**(2*s) # <<<<<<<<<<<<<<
23908  * return fun
23909  * def mitsuyasu(theta,fi,f0,smax=10):
23910  */
23911  __pyx_slice__33 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__33)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23912  __Pyx_GOTREF(__pyx_slice__33);
23913  __Pyx_GIVEREF(__pyx_slice__33);
23914 
23915  /* "WaveTools.pyx":209
23916  * s[ii:] = smax * (fi[ii:]/f0)**(-2.5)
23917  * fun = np.zeros((len(theta),len(fi)),)
23918  * for ii in range(len(fun[0,:])): # <<<<<<<<<<<<<<
23919  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii])
23920  * return fun
23921  */
23922  __pyx_slice__34 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__34)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23923  __Pyx_GOTREF(__pyx_slice__34);
23924  __Pyx_GIVEREF(__pyx_slice__34);
23925  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__34); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23926  __Pyx_GOTREF(__pyx_tuple__35);
23927  __Pyx_GIVEREF(__pyx_tuple__35);
23928 
23929  /* "WaveTools.pyx":210
23930  * fun = np.zeros((len(theta),len(fi)),)
23931  * for ii in range(len(fun[0,:])):
23932  * fun[:,ii] = np.cos(theta/2)**(2.*s[ii]) # <<<<<<<<<<<<<<
23933  * return fun
23934  *
23935  */
23936  __pyx_slice__36 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__36)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23937  __Pyx_GOTREF(__pyx_slice__36);
23938  __Pyx_GIVEREF(__pyx_slice__36);
23939 
23940  /* "WaveTools.pyx":341
23941  * if self.waveType not in self.knownWaveTypes:
23942  * logEvent("Wrong wavetype given: Valid wavetypes are %s" %(self.knownWaveTypes), level=0)
23943  * sys.exit(1) # <<<<<<<<<<<<<<
23944  * self.g = np.array(g)
23945  * self.waveDir = setDirVector(np.array(waveDir))
23946  */
23947  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23948  __Pyx_GOTREF(__pyx_tuple__37);
23949  __Pyx_GIVEREF(__pyx_tuple__37);
23950 
23951  /* "WaveTools.pyx":365
23952  * self.wavelength=wavelength
23953  * except:
23954  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0) # <<<<<<<<<<<<<<
23955  * sys.exit(1)
23956  * self.kDir = self.k * self.waveDir
23957  */
23958  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Wavelenght_is_not_d); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23959  __Pyx_GOTREF(__pyx_tuple__38);
23960  __Pyx_GIVEREF(__pyx_tuple__38);
23961 
23962  /* "WaveTools.pyx":366
23963  * except:
23964  * logEvent("WaveTools.py: Wavelenght is not defined for nonlinear waves. Enter wavelength in class arguments",level=0)
23965  * sys.exit(1) # <<<<<<<<<<<<<<
23966  * self.kDir = self.k * self.waveDir
23967  * self.amplitude = 0.5*self.waveHeight
23968  */
23969  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 366; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23970  __Pyx_GOTREF(__pyx_tuple__39);
23971  __Pyx_GIVEREF(__pyx_tuple__39);
23972 
23973  /* "WaveTools.pyx":373
23974  *
23975  * if(len(meanVelocity) != 3):
23976  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0) # <<<<<<<<<<<<<<
23977  * sys.exit(1)
23978  *
23979  */
23980  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_meanVelocity_should); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 373; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23981  __Pyx_GOTREF(__pyx_tuple__40);
23982  __Pyx_GIVEREF(__pyx_tuple__40);
23983 
23984  /* "WaveTools.pyx":374
23985  * if(len(meanVelocity) != 3):
23986  * logEvent("WaveTools.py: meanVelocity should be a vector with 3 components. ",level=0)
23987  * sys.exit(1) # <<<<<<<<<<<<<<
23988  *
23989  * self.Ycoeff = Ycoeff
23990  */
23991  __pyx_tuple__41 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__41)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
23992  __Pyx_GOTREF(__pyx_tuple__41);
23993  __Pyx_GIVEREF(__pyx_tuple__41);
23994 
23995  /* "WaveTools.pyx":382
23996  * if (Ycoeff is None) or (Bcoeff is None):
23997  * if self.waveType is not "Linear":
23998  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0) # <<<<<<<<<<<<<<
23999  * sys.exit(1)
24000  * def eta(self, x, t):
24001  */
24002  __pyx_tuple__42 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Need_to_define_Ycoe); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24003  __Pyx_GOTREF(__pyx_tuple__42);
24004  __Pyx_GIVEREF(__pyx_tuple__42);
24005 
24006  /* "WaveTools.pyx":383
24007  * if self.waveType is not "Linear":
24008  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
24009  * sys.exit(1) # <<<<<<<<<<<<<<
24010  * def eta(self, x, t):
24011  * if self.waveType is "Linear":
24012  */
24013  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 383; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24014  __Pyx_GOTREF(__pyx_tuple__43);
24015  __Pyx_GIVEREF(__pyx_tuple__43);
24016 
24017  /* "WaveTools.pyx":461
24018  * if phi == None:
24019  * self.phi = 2.0*pi*np.random.random(self.fi.shape[0])
24020  * logEvent('WaveTools.py: No phase array is given. Assigning random phases. Outputing the phasing of the random waves') # <<<<<<<<<<<<<<
24021  * else:
24022  * try:
24023  */
24024  __pyx_tuple__44 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_No_phase_array_is_g); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24025  __Pyx_GOTREF(__pyx_tuple__44);
24026  __Pyx_GIVEREF(__pyx_tuple__44);
24027 
24028  /* "WaveTools.pyx":466
24029  * self.phi = np.array(phi)
24030  * if self.phi.shape[0] != self.fi.shape[0]:
24031  * logEvent('WaveTools.py: Phase array must have N elements') # <<<<<<<<<<<<<<
24032  * sys.exit(1)
24033  *
24034  */
24035  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Phase_array_must_ha); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24036  __Pyx_GOTREF(__pyx_tuple__45);
24037  __Pyx_GIVEREF(__pyx_tuple__45);
24038 
24039  /* "WaveTools.pyx":467
24040  * if self.phi.shape[0] != self.fi.shape[0]:
24041  * logEvent('WaveTools.py: Phase array must have N elements')
24042  * sys.exit(1) # <<<<<<<<<<<<<<
24043  *
24044  * except:
24045  */
24046  __pyx_tuple__46 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24047  __Pyx_GOTREF(__pyx_tuple__46);
24048  __Pyx_GIVEREF(__pyx_tuple__46);
24049 
24050  /* "WaveTools.pyx":470
24051  *
24052  * except:
24053  * logEvent('WaveTools.py: phi argument must be an array with N elements') # <<<<<<<<<<<<<<
24054  * sys.exit(1)
24055  *
24056  */
24057  __pyx_tuple__47 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_phi_argument_must_b); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24058  __Pyx_GOTREF(__pyx_tuple__47);
24059  __Pyx_GIVEREF(__pyx_tuple__47);
24060 
24061  /* "WaveTools.pyx":471
24062  * except:
24063  * logEvent('WaveTools.py: phi argument must be an array with N elements')
24064  * sys.exit(1) # <<<<<<<<<<<<<<
24065  *
24066  * #ai = np.sqrt((Si_J[1:]+Si_J[:-1])*(fi[1:]-fi[:-1]))
24067  */
24068  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24069  __Pyx_GOTREF(__pyx_tuple__48);
24070  __Pyx_GIVEREF(__pyx_tuple__48);
24071 
24072  /* "WaveTools.pyx":482
24073  * except:
24074  * logEvent('WaveTools.py: Additional spectral parameters are not valid for the %s spectrum' %spectName)
24075  * sys.exit(1) # <<<<<<<<<<<<<<
24076  *
24077  *
24078  */
24079  __pyx_tuple__49 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24080  __Pyx_GOTREF(__pyx_tuple__49);
24081  __Pyx_GIVEREF(__pyx_tuple__49);
24082 
24083  /* "WaveTools.pyx":488
24084  * self.kDir = np.zeros((len(self.ki),3),)
24085  * for ii in range(3):
24086  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii] # <<<<<<<<<<<<<<
24087  * def eta(self, x, t):
24088  * """Free surface displacement
24089  */
24090  __pyx_slice__50 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24091  __Pyx_GOTREF(__pyx_slice__50);
24092  __Pyx_GIVEREF(__pyx_slice__50);
24093  __pyx_slice__51 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 488; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24094  __Pyx_GOTREF(__pyx_slice__51);
24095  __Pyx_GIVEREF(__pyx_slice__51);
24096 
24097  /* "WaveTools.pyx":537
24098  * (len(spectName) != Nspectra) or (len(spectral_params) != Nspectra) or(len(phi) != Nspectra):
24099  *
24100  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
24101  * sys.exit(1)
24102  *
24103  */
24104  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Parameters_passed_i); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24105  __Pyx_GOTREF(__pyx_tuple__52);
24106  __Pyx_GIVEREF(__pyx_tuple__52);
24107 
24108  /* "WaveTools.pyx":538
24109  *
24110  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
24111  * sys.exit(1) # <<<<<<<<<<<<<<
24112  *
24113  * except:
24114  */
24115  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24116  __Pyx_GOTREF(__pyx_tuple__53);
24117  __Pyx_GIVEREF(__pyx_tuple__53);
24118 
24119  /* "WaveTools.pyx":541
24120  *
24121  * except:
24122  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ') # <<<<<<<<<<<<<<
24123  * sys.exit(1)
24124  * # Initialize numpy arrays for complete reconstruction
24125  */
24126  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Parameters_passed_i); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24127  __Pyx_GOTREF(__pyx_tuple__54);
24128  __Pyx_GIVEREF(__pyx_tuple__54);
24129 
24130  /* "WaveTools.pyx":542
24131  * except:
24132  * logEvent('WaveTools.py: Parameters passed in MultiSpectraRandomWaves must be in array or list form with length Nspectra ')
24133  * sys.exit(1) # <<<<<<<<<<<<<<
24134  * # Initialize numpy arrays for complete reconstruction
24135  * self.Nall = 0
24136  */
24137  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24138  __Pyx_GOTREF(__pyx_tuple__55);
24139  __Pyx_GIVEREF(__pyx_tuple__55);
24140 
24141  /* "WaveTools.pyx":577
24142  * self.kiM[NN1:NN] = self.ki
24143  * self.aiM[NN1:NN] = self.ai
24144  * self.kDirM[NN1:NN,:] =self.kDir[:,:] # <<<<<<<<<<<<<<
24145  * self.phiM[NN1:NN] = self.phi
24146  *
24147  */
24148  __pyx_slice__56 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24149  __Pyx_GOTREF(__pyx_slice__56);
24150  __Pyx_GIVEREF(__pyx_slice__56);
24151  __pyx_slice__57 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24152  __Pyx_GOTREF(__pyx_slice__57);
24153  __Pyx_GIVEREF(__pyx_slice__57);
24154  __pyx_tuple__58 = PyTuple_Pack(2, __pyx_slice__56, __pyx_slice__57); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24155  __Pyx_GOTREF(__pyx_tuple__58);
24156  __Pyx_GIVEREF(__pyx_tuple__58);
24157  __pyx_slice__59 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24158  __Pyx_GOTREF(__pyx_slice__59);
24159  __Pyx_GIVEREF(__pyx_slice__59);
24160 
24161  /* "WaveTools.pyx":667
24162  *
24163  *
24164  * temp_array = np.zeros((1,3),) # <<<<<<<<<<<<<<
24165  * temp_array[0,:] = waveDir0
24166  * directions = range(0,self.Mtot)
24167  */
24168  __pyx_tuple__60 = PyTuple_Pack(2, __pyx_int_1, __pyx_int_3); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24169  __Pyx_GOTREF(__pyx_tuple__60);
24170  __Pyx_GIVEREF(__pyx_tuple__60);
24171  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_tuple__60); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24172  __Pyx_GOTREF(__pyx_tuple__61);
24173  __Pyx_GIVEREF(__pyx_tuple__61);
24174 
24175  /* "WaveTools.pyx":668
24176  *
24177  * temp_array = np.zeros((1,3),)
24178  * temp_array[0,:] = waveDir0 # <<<<<<<<<<<<<<
24179  * directions = range(0,self.Mtot)
24180  *
24181  */
24182  __pyx_slice__62 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24183  __Pyx_GOTREF(__pyx_slice__62);
24184  __Pyx_GIVEREF(__pyx_slice__62);
24185  __pyx_tuple__63 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__62); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 668; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24186  __Pyx_GOTREF(__pyx_tuple__63);
24187  __Pyx_GIVEREF(__pyx_tuple__63);
24188 
24189  /* "WaveTools.pyx":674
24190  * for rr in directions:
24191  * theta = self.thetas[rr]
24192  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:] # <<<<<<<<<<<<<<
24193  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:])
24194  *
24195  */
24196  __pyx_slice__64 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24197  __Pyx_GOTREF(__pyx_slice__64);
24198  __Pyx_GIVEREF(__pyx_slice__64);
24199  __pyx_tuple__65 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__64); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24200  __Pyx_GOTREF(__pyx_tuple__65);
24201  __Pyx_GIVEREF(__pyx_tuple__65);
24202  __pyx_slice__66 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24203  __Pyx_GOTREF(__pyx_slice__66);
24204  __Pyx_GIVEREF(__pyx_slice__66);
24205 
24206  /* "WaveTools.pyx":675
24207  * theta = self.thetas[rr]
24208  * self.waveDirs[rr,:] = rotation3D(temp_array,theta,self.vDir)[0,:]
24209  * self.waveDirs[rr,:]=setDirVector( self.waveDirs[rr,:]) # <<<<<<<<<<<<<<
24210  *
24211  *
24212  */
24213  __pyx_slice__67 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24214  __Pyx_GOTREF(__pyx_slice__67);
24215  __Pyx_GIVEREF(__pyx_slice__67);
24216  __pyx_slice__68 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24217  __Pyx_GOTREF(__pyx_slice__68);
24218  __Pyx_GIVEREF(__pyx_slice__68);
24219 
24220  /* "WaveTools.pyx":684
24221  * self.phiDirs = phi
24222  * else:
24223  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N") # <<<<<<<<<<<<<<
24224  * sys.exit(1)
24225  *
24226  */
24227  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_phi_in_DirectionalW); if (unlikely(!__pyx_tuple__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24228  __Pyx_GOTREF(__pyx_tuple__69);
24229  __Pyx_GIVEREF(__pyx_tuple__69);
24230 
24231  /* "WaveTools.pyx":685
24232  * else:
24233  * logEvent("WaveTools.py: phi in DirectionalWaves class must be given either as None or as a list with 2*M + 1 numpy arrays with length N")
24234  * sys.exit(1) # <<<<<<<<<<<<<<
24235  *
24236  * if (phiSymm):
24237  */
24238  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24239  __Pyx_GOTREF(__pyx_tuple__70);
24240  __Pyx_GIVEREF(__pyx_tuple__70);
24241 
24242  /* "WaveTools.pyx":689
24243  * if (phiSymm):
24244  * for i in range(0,M):
24245  * self.phiDirs[M+1+i,:] = self.phiDirs[self.M - 1 - i,:] # <<<<<<<<<<<<<<
24246  *
24247  *
24248  */
24249  __pyx_slice__71 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24250  __Pyx_GOTREF(__pyx_slice__71);
24251  __Pyx_GIVEREF(__pyx_slice__71);
24252  __pyx_slice__72 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 689; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24253  __Pyx_GOTREF(__pyx_slice__72);
24254  __Pyx_GIVEREF(__pyx_slice__72);
24255 
24256  /* "WaveTools.pyx":702
24257  * except:
24258  * logEvent('WaveTools.py: Additional spread parameters are not valid for the %s spectrum' %spectName)
24259  * sys.exit(1) # <<<<<<<<<<<<<<
24260  *
24261  * # Setting amplitudes
24262  */
24263  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24264  __Pyx_GOTREF(__pyx_tuple__73);
24265  __Pyx_GIVEREF(__pyx_tuple__73);
24266 
24267  /* "WaveTools.pyx":709
24268  * # Normalising integral over all frequencies
24269  * for ii in freq:
24270  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m) # <<<<<<<<<<<<<<
24271  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
24272  * # Creating amplitudes spectrum
24273  */
24274  __pyx_slice__74 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24275  __Pyx_GOTREF(__pyx_slice__74);
24276  __Pyx_GIVEREF(__pyx_slice__74);
24277  __pyx_slice__75 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 709; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24278  __Pyx_GOTREF(__pyx_slice__75);
24279  __Pyx_GIVEREF(__pyx_slice__75);
24280 
24281  /* "WaveTools.pyx":710
24282  * for ii in freq:
24283  * self.Si_Sp[:,ii] = normIntegral(self.Si_Sp[:,ii],self.theta_m)
24284  * self.Si_Sp[:,ii]*= self.Si_Jm[ii] # <<<<<<<<<<<<<<
24285  * # Creating amplitudes spectrum
24286  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
24287  */
24288  __pyx_slice__76 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24289  __Pyx_GOTREF(__pyx_slice__76);
24290  __Pyx_GIVEREF(__pyx_slice__76);
24291 
24292  /* "WaveTools.pyx":712
24293  * self.Si_Sp[:,ii]*= self.Si_Jm[ii]
24294  * # Creating amplitudes spectrum
24295  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim)) # <<<<<<<<<<<<<<
24296  * def eta(self, x, t):
24297  * """Free surface displacement
24298  */
24299  __pyx_slice__77 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__77)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24300  __Pyx_GOTREF(__pyx_slice__77);
24301  __Pyx_GIVEREF(__pyx_slice__77);
24302 
24303  /* "WaveTools.pyx":786
24304  * self.z0 = timeSeriesPosition[2]
24305  * else:
24306  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0) # <<<<<<<<<<<<<<
24307  * sys.exit(1)
24308  *
24309  */
24310  __pyx_tuple__78 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Location_vector_for); if (unlikely(!__pyx_tuple__78)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 786; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24311  __Pyx_GOTREF(__pyx_tuple__78);
24312  __Pyx_GIVEREF(__pyx_tuple__78);
24313 
24314  /* "WaveTools.pyx":787
24315  * else:
24316  * logEvent("WaveTools.py: Location vector for timeSeries must have three-components",level=0)
24317  * sys.exit(1) # <<<<<<<<<<<<<<
24318  *
24319  *
24320  */
24321  __pyx_tuple__79 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__79)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 787; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24322  __Pyx_GOTREF(__pyx_tuple__79);
24323  __Pyx_GIVEREF(__pyx_tuple__79);
24324 
24325  /* "WaveTools.pyx":803
24326  * dirCheck(self.waveDir,self.vDir)
24327  * #Reading time series
24328  * filetype = timeSeriesFile[-4:] # <<<<<<<<<<<<<<
24329  * logEvent("WaveTools.py: Reading timeseries from %s file: %s" % (filetype,timeSeriesFile),level=0)
24330  * fid = open(timeSeriesFile,"r")
24331  */
24332  __pyx_slice__80 = PySlice_New(__pyx_int_neg_4, Py_None, Py_None); if (unlikely(!__pyx_slice__80)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 803; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24333  __Pyx_GOTREF(__pyx_slice__80);
24334  __Pyx_GIVEREF(__pyx_slice__80);
24335 
24336  /* "WaveTools.pyx":808
24337  * if (filetype !=".txt") and (filetype != ".csv"):
24338  * logEvent("WaveTools.py: File %s must be given in .txt or .csv format" % (timeSeriesFile),level=0)
24339  * sys.exit(1) # <<<<<<<<<<<<<<
24340  * elif (filetype == ".csv"):
24341  * tdata = np.loadtxt(fid,skiprows=skiprows,delimiter=",")
24342  */
24343  __pyx_tuple__81 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 808; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24344  __Pyx_GOTREF(__pyx_tuple__81);
24345  __Pyx_GIVEREF(__pyx_tuple__81);
24346 
24347  /* "WaveTools.pyx":816
24348  * #Checks for tseries file
24349  * # Only 2 columns: time & eta
24350  * ncols = len(tdata[0,:]) # <<<<<<<<<<<<<<
24351  * if ncols != 2:
24352  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24353  */
24354  __pyx_slice__83 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__83)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24355  __Pyx_GOTREF(__pyx_slice__83);
24356  __Pyx_GIVEREF(__pyx_slice__83);
24357  __pyx_tuple__84 = PyTuple_Pack(2, __pyx_int_0, __pyx_slice__83); if (unlikely(!__pyx_tuple__84)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 816; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24358  __Pyx_GOTREF(__pyx_tuple__84);
24359  __Pyx_GIVEREF(__pyx_tuple__84);
24360 
24361  /* "WaveTools.pyx":819
24362  * if ncols != 2:
24363  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24364  * sys.exit(1) # <<<<<<<<<<<<<<
24365  * time_temp = tdata[:,0]
24366  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
24367  */
24368  __pyx_tuple__85 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__85)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24369  __Pyx_GOTREF(__pyx_tuple__85);
24370  __Pyx_GIVEREF(__pyx_tuple__85);
24371 
24372  /* "WaveTools.pyx":820
24373  * logEvent("WaveTools.py: Timeseries file (%s) must have only two columns [time, eta]" % (timeSeriesFile),level=0)
24374  * sys.exit(1)
24375  * time_temp = tdata[:,0] # <<<<<<<<<<<<<<
24376  * self.dt = (time_temp[-1]-time_temp[0])/(len(time_temp)-1)
24377  *
24378  */
24379  __pyx_slice__86 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__86)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24380  __Pyx_GOTREF(__pyx_slice__86);
24381  __Pyx_GIVEREF(__pyx_slice__86);
24382  __pyx_tuple__87 = PyTuple_Pack(2, __pyx_slice__86, __pyx_int_0); if (unlikely(!__pyx_tuple__87)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 820; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24383  __Pyx_GOTREF(__pyx_tuple__87);
24384  __Pyx_GIVEREF(__pyx_tuple__87);
24385 
24386  /* "WaveTools.pyx":832
24387  * if time_temp[i]<=time_temp[i-1]:
24388  * logEvent("WaveTools.py: Found not consistent time entry between %s and %s row in %s file. Time variable must be always at the first column of the file and increasing monotonically" %(i-1,i,timeSeriesFile) )
24389  * sys.exit(1) # <<<<<<<<<<<<<<
24390  * #check if sampling rate is constant
24391  * if dt_temp!=self.dt:
24392  */
24393  __pyx_tuple__88 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__88)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 832; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24394  __Pyx_GOTREF(__pyx_tuple__88);
24395  __Pyx_GIVEREF(__pyx_tuple__88);
24396 
24397  /* "WaveTools.pyx":837
24398  * doInterp = True
24399  * if(doInterp):
24400  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0) # <<<<<<<<<<<<<<
24401  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
24402  * self.eta = np.interp(self.time,time_temp,tdata[:,1])
24403  */
24404  __pyx_tuple__89 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Not_constant_sampli); if (unlikely(!__pyx_tuple__89)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 837; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24405  __Pyx_GOTREF(__pyx_tuple__89);
24406  __Pyx_GIVEREF(__pyx_tuple__89);
24407 
24408  /* "WaveTools.pyx":839
24409  * logEvent("WaveTools.py: Not constant sampling rate found, proceeding to signal interpolation to a constant sampling rate",level=0)
24410  * self.time = np.linspace(time_temp[0],time_temp[-1],len(time_temp))
24411  * self.eta = np.interp(self.time,time_temp,tdata[:,1]) # <<<<<<<<<<<<<<
24412  * else:
24413  * self.time = time_temp
24414  */
24415  __pyx_slice__90 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__90)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24416  __Pyx_GOTREF(__pyx_slice__90);
24417  __Pyx_GIVEREF(__pyx_slice__90);
24418  __pyx_tuple__91 = PyTuple_Pack(2, __pyx_slice__90, __pyx_int_1); if (unlikely(!__pyx_tuple__91)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24419  __Pyx_GOTREF(__pyx_tuple__91);
24420  __Pyx_GIVEREF(__pyx_tuple__91);
24421 
24422  /* "WaveTools.pyx":842
24423  * else:
24424  * self.time = time_temp
24425  * self.eta = tdata[:,1] # <<<<<<<<<<<<<<
24426  *
24427  * self.t0 = self.time[0]
24428  */
24429  __pyx_slice__92 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__92)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24430  __Pyx_GOTREF(__pyx_slice__92);
24431  __Pyx_GIVEREF(__pyx_slice__92);
24432  __pyx_tuple__93 = PyTuple_Pack(2, __pyx_slice__92, __pyx_int_1); if (unlikely(!__pyx_tuple__93)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 842; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24433  __Pyx_GOTREF(__pyx_tuple__93);
24434  __Pyx_GIVEREF(__pyx_tuple__93);
24435 
24436  /* "WaveTools.pyx":865
24437  * Nf = self.N
24438  * self.nfft=len(self.time)
24439  * logEvent("WaveTools.py: performing a direct series decomposition") # <<<<<<<<<<<<<<
24440  * self.decomp = decompose_tseries(self.time,self.eta,self.dt)
24441  * self.ai = self.decomp[1]
24442  */
24443  __pyx_tuple__94 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_performing_a_direct); if (unlikely(!__pyx_tuple__94)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 865; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24444  __Pyx_GOTREF(__pyx_tuple__94);
24445  __Pyx_GIVEREF(__pyx_tuple__94);
24446 
24447  /* "WaveTools.pyx":879
24448  * self.kDir = np.zeros((len(self.ki),3),"d")
24449  * for ii in range(len(self.ki)):
24450  * self.kDir[ii,:] = self.ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
24451  *
24452  *
24453  */
24454  __pyx_slice__95 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__95)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24455  __Pyx_GOTREF(__pyx_slice__95);
24456  __Pyx_GIVEREF(__pyx_slice__95);
24457  __pyx_slice__96 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__96)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24458  __Pyx_GOTREF(__pyx_slice__96);
24459  __Pyx_GIVEREF(__pyx_slice__96);
24460 
24461  /* "WaveTools.pyx":885
24462  * else:
24463  * if (window_params==None):
24464  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary") # <<<<<<<<<<<<<<
24465  * sys.exit(1)
24466  * try:
24467  */
24468  __pyx_tuple__97 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Set_parameters_for); if (unlikely(!__pyx_tuple__97)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24469  __Pyx_GOTREF(__pyx_tuple__97);
24470  __Pyx_GIVEREF(__pyx_tuple__97);
24471 
24472  /* "WaveTools.pyx":886
24473  * if (window_params==None):
24474  * logEvent("WaveTools.py: Set parameters for spectral windowing. Argument window_params must be a dictionary")
24475  * sys.exit(1) # <<<<<<<<<<<<<<
24476  * try:
24477  * self.Nwaves = window_params["Nwaves"]
24478  */
24479  __pyx_tuple__98 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__98)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24480  __Pyx_GOTREF(__pyx_tuple__98);
24481  __Pyx_GIVEREF(__pyx_tuple__98);
24482 
24483  /* "WaveTools.pyx":890
24484  * self.Nwaves = window_params["Nwaves"]
24485  * except:
24486  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary") # <<<<<<<<<<<<<<
24487  * sys.exit(1)
24488  *
24489  */
24490  __pyx_tuple__99 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Nwav); if (unlikely(!__pyx_tuple__99)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 890; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24491  __Pyx_GOTREF(__pyx_tuple__99);
24492  __Pyx_GIVEREF(__pyx_tuple__99);
24493 
24494  /* "WaveTools.pyx":891
24495  * except:
24496  * logEvent("WaveTools.py: Dictionary key 'Nwaves' (waves per window) not found in window_params dictionary")
24497  * sys.exit(1) # <<<<<<<<<<<<<<
24498  *
24499  * try:
24500  */
24501  __pyx_tuple__100 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 891; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24502  __Pyx_GOTREF(__pyx_tuple__100);
24503  __Pyx_GIVEREF(__pyx_tuple__100);
24504 
24505  /* "WaveTools.pyx":896
24506  * self.Tm = window_params["Tm"]
24507  * except:
24508  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary") # <<<<<<<<<<<<<<
24509  * sys.exit(1)
24510  *
24511  */
24512  __pyx_tuple__101 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Tm_m); if (unlikely(!__pyx_tuple__101)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24513  __Pyx_GOTREF(__pyx_tuple__101);
24514  __Pyx_GIVEREF(__pyx_tuple__101);
24515 
24516  /* "WaveTools.pyx":897
24517  * except:
24518  * logEvent("WaveTools.py: Dictionary key 'Tm' (mean or characteristic wave period) not found in window_params dictionary")
24519  * sys.exit(1) # <<<<<<<<<<<<<<
24520  *
24521  * try:
24522  */
24523  __pyx_tuple__102 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__102)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 897; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24524  __Pyx_GOTREF(__pyx_tuple__102);
24525  __Pyx_GIVEREF(__pyx_tuple__102);
24526 
24527  /* "WaveTools.pyx":902
24528  * self.windowName = window_params["Window"]
24529  * except:
24530  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary") # <<<<<<<<<<<<<<
24531  * sys.exit(1)
24532  *
24533  */
24534  __pyx_tuple__103 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Dictionary_key_Wind); if (unlikely(!__pyx_tuple__103)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24535  __Pyx_GOTREF(__pyx_tuple__103);
24536  __Pyx_GIVEREF(__pyx_tuple__103);
24537 
24538  /* "WaveTools.pyx":903
24539  * except:
24540  * logEvent("WaveTools.py: Dictionary key 'Window' (window function type) not found in window_params dictionary")
24541  * sys.exit(1) # <<<<<<<<<<<<<<
24542  *
24543  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24544  */
24545  __pyx_tuple__104 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__104)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 903; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24546  __Pyx_GOTREF(__pyx_tuple__104);
24547  __Pyx_GIVEREF(__pyx_tuple__104);
24548 
24549  /* "WaveTools.pyx":906
24550  *
24551  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24552  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )") # <<<<<<<<<<<<<<
24553  * sys.exit(1)
24554  *
24555  */
24556  __pyx_tuple__105 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Reconstruction_is_e); if (unlikely(!__pyx_tuple__105)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 906; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24557  __Pyx_GOTREF(__pyx_tuple__105);
24558  __Pyx_GIVEREF(__pyx_tuple__105);
24559 
24560  /* "WaveTools.pyx":907
24561  * if(self.Nwaves > 0.5*self.tlength / self.Tm):
24562  * logEvent("WaveTools.py: Reconstruction is expected to have two windows or less. Plese reduce the number of waves per window or switch to direct decomposition )")
24563  * sys.exit(1) # <<<<<<<<<<<<<<
24564  *
24565  *
24566  */
24567  __pyx_tuple__106 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__106)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24568  __Pyx_GOTREF(__pyx_tuple__106);
24569  __Pyx_GIVEREF(__pyx_tuple__106);
24570 
24571  /* "WaveTools.pyx":913
24572  * validWindows = [costap, tophat]
24573  * wind_filt = loadExistingFunction(self.windowName, validWindows)
24574  * logEvent("WaveTools.py: performing series decomposition with spectral windows") # <<<<<<<<<<<<<<
24575  * # Portion of overlap, compared to window time
24576  * try:
24577  */
24578  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_performing_series_d); if (unlikely(!__pyx_tuple__107)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24579  __Pyx_GOTREF(__pyx_tuple__107);
24580  __Pyx_GIVEREF(__pyx_tuple__107);
24581 
24582  /* "WaveTools.pyx":919
24583  * except:
24584  * self.overlap = 0.25
24585  * logEvent("WaveTools.py: Overlap entry in window_params dictionary not found. Setting default value of 0.25 (1/4 of the window length)") # <<<<<<<<<<<<<<
24586  *
24587  * try:
24588  */
24589  __pyx_tuple__108 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Overlap_entry_in_wi); if (unlikely(!__pyx_tuple__108)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24590  __Pyx_GOTREF(__pyx_tuple__108);
24591  __Pyx_GIVEREF(__pyx_tuple__108);
24592 
24593  /* "WaveTools.pyx":925
24594  * except:
24595  * self.cutoff= 0.1
24596  * logEvent("WaveTools.py: Cutoff entry in window_params dictionary not found. Setting default value of 0.1 (1/10 of the window length)") # <<<<<<<<<<<<<<
24597  *
24598  *
24599  */
24600  __pyx_tuple__109 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Cutoff_entry_in_win); if (unlikely(!__pyx_tuple__109)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24601  __Pyx_GOTREF(__pyx_tuple__109);
24602  __Pyx_GIVEREF(__pyx_tuple__109);
24603 
24604  /* "WaveTools.pyx":933
24605  * self.handover = max(1.1 *self.cutoff, self.overlap / 2.)
24606  * if (self.handover > 0.9 * self.overlap):
24607  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap") # <<<<<<<<<<<<<<
24608  * sys.exit(1)
24609  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
24610  */
24611  __pyx_tuple__110 = PyTuple_Pack(1, __pyx_kp_s_WaveTools_py_Window_handover_is); if (unlikely(!__pyx_tuple__110)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24612  __Pyx_GOTREF(__pyx_tuple__110);
24613  __Pyx_GIVEREF(__pyx_tuple__110);
24614 
24615  /* "WaveTools.pyx":934
24616  * if (self.handover > 0.9 * self.overlap):
24617  * logEvent("WaveTools.py: Window handover is not optimal as the cutoff is too close to the overlap. Decrease cutoff or increase overlap")
24618  * sys.exit(1) # <<<<<<<<<<<<<<
24619  * self.Twindow = self.Tm * self.Nwaves # setting the window duration (approx.). Twindow = Tmean * Nwaves
24620  * self.Toverlap = self.overlap * self.Twindow
24621  */
24622  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_int_1); if (unlikely(!__pyx_tuple__111)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24623  __Pyx_GOTREF(__pyx_tuple__111);
24624  __Pyx_GIVEREF(__pyx_tuple__111);
24625 
24626  /* "WaveTools.pyx":946
24627  * # Setting where each window starts and ends
24628  * for jj in range(self.Nwindows):
24629  * span = np.zeros(2,"d") # <<<<<<<<<<<<<<
24630  * tfirst = self.time[0] + self.Twindow
24631  * tlast = self.time[-1] - self.Twindow
24632  */
24633  __pyx_tuple__112 = PyTuple_Pack(2, __pyx_int_2, __pyx_n_s_d); if (unlikely(!__pyx_tuple__112)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24634  __Pyx_GOTREF(__pyx_tuple__112);
24635  __Pyx_GIVEREF(__pyx_tuple__112);
24636 
24637  /* "WaveTools.pyx":970
24638  *
24639  * for wind in self.windows_rec:
24640  * self.nfft=len(wind[:,0]) # <<<<<<<<<<<<<<
24641  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
24642  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
24643  */
24644  __pyx_slice__113 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__113)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24645  __Pyx_GOTREF(__pyx_slice__113);
24646  __Pyx_GIVEREF(__pyx_slice__113);
24647  __pyx_tuple__114 = PyTuple_Pack(2, __pyx_slice__113, __pyx_int_0); if (unlikely(!__pyx_tuple__114)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 970; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24648  __Pyx_GOTREF(__pyx_tuple__114);
24649  __Pyx_GIVEREF(__pyx_tuple__114);
24650 
24651  /* "WaveTools.pyx":971
24652  * for wind in self.windows_rec:
24653  * self.nfft=len(wind[:,0])
24654  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff) # <<<<<<<<<<<<<<
24655  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt)
24656  * self.N = min(self.N, len(decomp[0]))
24657  */
24658  __pyx_slice__115 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__115)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24659  __Pyx_GOTREF(__pyx_slice__115);
24660  __Pyx_GIVEREF(__pyx_slice__115);
24661  __pyx_tuple__116 = PyTuple_Pack(2, __pyx_slice__115, __pyx_int_1); if (unlikely(!__pyx_tuple__116)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 971; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24662  __Pyx_GOTREF(__pyx_tuple__116);
24663  __Pyx_GIVEREF(__pyx_tuple__116);
24664 
24665  /* "WaveTools.pyx":972
24666  * self.nfft=len(wind[:,0])
24667  * wind[:,1] *=wind_filt(self.nfft,cutoff = self.cutoff)
24668  * decomp = decompose_tseries(wind[:,0],wind[:,1],self.dt) # <<<<<<<<<<<<<<
24669  * self.N = min(self.N, len(decomp[0]))
24670  * Nftemp = self.N
24671  */
24672  __pyx_slice__117 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__117)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24673  __Pyx_GOTREF(__pyx_slice__117);
24674  __Pyx_GIVEREF(__pyx_slice__117);
24675  __pyx_tuple__118 = PyTuple_Pack(2, __pyx_slice__117, __pyx_int_0); if (unlikely(!__pyx_tuple__118)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24676  __Pyx_GOTREF(__pyx_tuple__118);
24677  __Pyx_GIVEREF(__pyx_tuple__118);
24678  __pyx_slice__119 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__119)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24679  __Pyx_GOTREF(__pyx_slice__119);
24680  __Pyx_GIVEREF(__pyx_slice__119);
24681  __pyx_tuple__120 = PyTuple_Pack(2, __pyx_slice__119, __pyx_int_1); if (unlikely(!__pyx_tuple__120)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24682  __Pyx_GOTREF(__pyx_tuple__120);
24683  __Pyx_GIVEREF(__pyx_tuple__120);
24684 
24685  /* "WaveTools.pyx":992
24686  * kDir = np.zeros((len(ki),3),"d")
24687  * for ii in range(len(ki)):
24688  * kDir[ii,:] = ki[ii]*self.waveDir[:] # <<<<<<<<<<<<<<
24689  * decomp.append(kDir)
24690  * decomp.append(ki)
24691  */
24692  __pyx_slice__121 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__121)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24693  __Pyx_GOTREF(__pyx_slice__121);
24694  __Pyx_GIVEREF(__pyx_slice__121);
24695  __pyx_slice__122 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__122)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 992; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24696  __Pyx_GOTREF(__pyx_slice__122);
24697  __Pyx_GIVEREF(__pyx_slice__122);
24698 
24699  /* "WaveTools.pyx":1056
24700  * phi = self.decompose_window[Nw][2]
24701  * kDir = self.decompose_window[Nw][4]
24702  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
24703  * Eta=0.
24704  * for ii in range(0,self.Nf):
24705  */
24706  __pyx_tuple__123 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__123)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24707  __Pyx_GOTREF(__pyx_tuple__123);
24708  __Pyx_GIVEREF(__pyx_tuple__123);
24709 
24710  /* "WaveTools.pyx":1076
24711  * kDir = self.decompose_window[Nw][4]
24712  * ki = self.decompose_window[Nw][5]
24713  * t0 = self.windows_rec[Nw][0,0] # <<<<<<<<<<<<<<
24714  * U=0.
24715  * for ii in range(0,self.Nf):
24716  */
24717  __pyx_tuple__124 = PyTuple_Pack(2, __pyx_int_0, __pyx_int_0); if (unlikely(!__pyx_tuple__124)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1076; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24718  __Pyx_GOTREF(__pyx_tuple__124);
24719  __Pyx_GIVEREF(__pyx_tuple__124);
24720 
24721  /* "WaveTools.pyx":21
24722  *
24723  *
24724  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
24725  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
24726  * param: funcName : function name in form of string under consideration
24727  */
24728  __pyx_tuple__125 = PyTuple_Pack(5, __pyx_n_s_funcName, __pyx_n_s_validFunctions, __pyx_n_s_funcNames, __pyx_n_s_func, __pyx_n_s_func_ret); if (unlikely(!__pyx_tuple__125)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24729  __Pyx_GOTREF(__pyx_tuple__125);
24730  __Pyx_GIVEREF(__pyx_tuple__125);
24731  __pyx_codeobj__126 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__125, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_loadExistingFunction, 21, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24732 
24733  /* "WaveTools.pyx":39
24734  *
24735  *
24736  * def setVertDir(g): # <<<<<<<<<<<<<<
24737  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
24738  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
24739  */
24740  __pyx_tuple__127 = PyTuple_Pack(1, __pyx_n_s_g); if (unlikely(!__pyx_tuple__127)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24741  __Pyx_GOTREF(__pyx_tuple__127);
24742  __Pyx_GIVEREF(__pyx_tuple__127);
24743  __pyx_codeobj__128 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_setVertDir, 39, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24744 
24745  /* "WaveTools.pyx":45
24746  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
24747  *
24748  * def setDirVector(vector): # <<<<<<<<<<<<<<
24749  * """ Returns the direction of a vector in the form of a unit vector
24750  * param: vector : Any vector with three components
24751  */
24752  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_n_s_vector); if (unlikely(!__pyx_tuple__129)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24753  __Pyx_GOTREF(__pyx_tuple__129);
24754  __Pyx_GIVEREF(__pyx_tuple__129);
24755  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__129, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_setDirVector, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24756 
24757  /* "WaveTools.pyx":51
24758  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
24759  *
24760  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
24761  * """ Checks if to vectors are vertical and returns system exit if not
24762  * param: v1 : 1st vector [-] with three components
24763  */
24764  __pyx_tuple__131 = PyTuple_Pack(3, __pyx_n_s_v1, __pyx_n_s_v2, __pyx_n_s_dircheck); if (unlikely(!__pyx_tuple__131)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24765  __Pyx_GOTREF(__pyx_tuple__131);
24766  __Pyx_GIVEREF(__pyx_tuple__131);
24767  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__131, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_dirCheck, 51, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24768 
24769  /* "WaveTools.pyx":63
24770  * else:
24771  * return None
24772  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
24773  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
24774  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
24775  */
24776  __pyx_tuple__133 = PyTuple_Pack(3, __pyx_n_s_fi, __pyx_n_s_df, __pyx_n_s_fim_tmp); if (unlikely(!__pyx_tuple__133)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24777  __Pyx_GOTREF(__pyx_tuple__133);
24778  __Pyx_GIVEREF(__pyx_tuple__133);
24779  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__133, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_reduceToIntervals, 63, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24780 
24781  /* "WaveTools.pyx":72
24782  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
24783  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
24784  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
24785  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
24786  * param: a : y(x) function [-]
24787  */
24788  __pyx_tuple__135 = PyTuple_Pack(2, __pyx_n_s_a, __pyx_n_s_x); if (unlikely(!__pyx_tuple__135)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24789  __Pyx_GOTREF(__pyx_tuple__135);
24790  __Pyx_GIVEREF(__pyx_tuple__135);
24791  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__135, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_returnRectangles, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24792 
24793  /* "WaveTools.pyx":78
24794  * """
24795  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
24796  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
24797  * """ Returns \delta y of y(x,z) using the rectangle method
24798  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
24799  */
24800  __pyx_tuple__137 = PyTuple_Pack(6, __pyx_n_s_a, __pyx_n_s_x, __pyx_n_s_y, __pyx_n_s_ai, __pyx_n_s_ii, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__137)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24801  __Pyx_GOTREF(__pyx_tuple__137);
24802  __Pyx_GIVEREF(__pyx_tuple__137);
24803  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_returnRectangles3D, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24804 
24805  /* "WaveTools.pyx":92
24806  * ai[:,jj] *= (x[1:]-x[:-1])
24807  * return ai
24808  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
24809  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
24810  * param: Sint : Sint(th) function [-]
24811  */
24812  __pyx_tuple__139 = PyTuple_Pack(3, __pyx_n_s_Sint, __pyx_n_s_th, __pyx_n_s_G0); if (unlikely(!__pyx_tuple__139)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24813  __Pyx_GOTREF(__pyx_tuple__139);
24814  __Pyx_GIVEREF(__pyx_tuple__139);
24815  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_normIntegral, 92, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24816 
24817  /* "WaveTools.pyx":102
24818  *
24819  *
24820  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
24821  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
24822  * :param kDir: wave number vector [1/L] with three components
24823  */
24824  __pyx_tuple__141 = PyTuple_Pack(7, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_phase); if (unlikely(!__pyx_tuple__141)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24825  __Pyx_GOTREF(__pyx_tuple__141);
24826  __Pyx_GIVEREF(__pyx_tuple__141);
24827  __pyx_codeobj__142 = (PyObject*)__Pyx_PyCode_New(6, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta_mode, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24828 
24829  /* "WaveTools.pyx":113
24830  *
24831  *
24832  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
24833  * """Returns a single frequency mode for velocity at point x,y,z,t
24834  * :param kDir: wave number vector [1/L] with three components
24835  */
24836  __pyx_tuple__143 = PyTuple_Pack(18, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_kDir, __pyx_n_s_kAbs, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_amplitude, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_g, __pyx_n_s_vDir, __pyx_n_s_phase, __pyx_n_s_Z, __pyx_n_s_UH, __pyx_n_s_UV, __pyx_n_s_ii, __pyx_n_s_waveDir, __pyx_n_s_V); if (unlikely(!__pyx_tuple__143)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24837  __Pyx_GOTREF(__pyx_tuple__143);
24838  __Pyx_GIVEREF(__pyx_tuple__143);
24839  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(11, 0, 18, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_vel_mode, 113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24840 
24841  /* "WaveTools.pyx":142
24842  *
24843  *
24844  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
24845  * """sigma function for JONSWAP spectrum
24846  * http://www.wikiwaves.org/Ocean-Wave_Sectra
24847  */
24848  __pyx_tuple__145 = PyTuple_Pack(3, __pyx_n_s_omega, __pyx_n_s_omega0, __pyx_n_s_sigmaReturn); if (unlikely(!__pyx_tuple__145)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24849  __Pyx_GOTREF(__pyx_tuple__145);
24850  __Pyx_GIVEREF(__pyx_tuple__145);
24851  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_sigma, 142, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24852 
24853  /* "WaveTools.pyx":150
24854  *
24855  *
24856  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
24857  * """The wave spectrum from Joint North Sea Wave Observation Project
24858  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
24859  */
24860  __pyx_tuple__147 = PyTuple_Pack(11, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs, __pyx_n_s_gamma, __pyx_n_s_TMA, __pyx_n_s_depth, __pyx_n_s_Tp, __pyx_n_s_bj, __pyx_n_s_r, __pyx_n_s_tma, __pyx_n_s_k); if (unlikely(!__pyx_tuple__147)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24861  __Pyx_GOTREF(__pyx_tuple__147);
24862  __Pyx_GIVEREF(__pyx_tuple__147);
24863  __pyx_codeobj__148 = (PyObject*)__Pyx_PyCode_New(6, 0, 11, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__147, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_JONSWAP, 150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__148)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24864 
24865  /* "WaveTools.pyx":174
24866  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
24867  *
24868  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
24869  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
24870  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
24871  */
24872  __pyx_tuple__149 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_f0, __pyx_n_s_Hs); if (unlikely(!__pyx_tuple__149)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24873  __Pyx_GOTREF(__pyx_tuple__149);
24874  __Pyx_GIVEREF(__pyx_tuple__149);
24875  __pyx_codeobj__150 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__149, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_PM_mod, 174, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__150)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24876 
24877  /* "WaveTools.pyx":186
24878  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
24879  *
24880  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
24881  * """The cos2s wave directional Spread
24882  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
24883  */
24884  __pyx_tuple__151 = PyTuple_Pack(5, __pyx_n_s_theta, __pyx_n_s_f, __pyx_n_s_s, __pyx_n_s_fun, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__151)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24885  __Pyx_GOTREF(__pyx_tuple__151);
24886  __Pyx_GIVEREF(__pyx_tuple__151);
24887  __pyx_codeobj__152 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__151, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_cos2s, 186, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__152)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24888 
24889  /* "WaveTools.pyx":197
24890  * fun[:,ii] = np.cos(theta/2)**(2*s)
24891  * return fun
24892  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
24893  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
24894  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
24895  */
24896  __pyx_tuple__153 = PyTuple_Pack(7, __pyx_n_s_theta, __pyx_n_s_fi, __pyx_n_s_f0, __pyx_n_s_smax, __pyx_n_s_s, __pyx_n_s_ii, __pyx_n_s_fun); if (unlikely(!__pyx_tuple__153)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24897  __Pyx_GOTREF(__pyx_tuple__153);
24898  __Pyx_GIVEREF(__pyx_tuple__153);
24899  __pyx_codeobj__154 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__153, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_mitsuyasu, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__154)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24900 
24901  /* "WaveTools.pyx":217
24902  *
24903  *
24904  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
24905  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
24906  *
24907  */
24908  __pyx_tuple__155 = PyTuple_Pack(7, __pyx_n_s_w, __pyx_n_s_d, __pyx_n_s_g, __pyx_n_s_niter, __pyx_n_s_w_aux, __pyx_n_s_K, __pyx_n_s_jj); if (unlikely(!__pyx_tuple__155)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24909  __Pyx_GOTREF(__pyx_tuple__155);
24910  __Pyx_GIVEREF(__pyx_tuple__155);
24911  __pyx_codeobj__156 = (PyObject*)__Pyx_PyCode_New(4, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__155, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_dispersion, 217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__156)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24912 
24913  /* "WaveTools.pyx":246
24914  *
24915  *
24916  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
24917  * """ returns a top hat filter
24918  * :param l: array length
24919  */
24920  __pyx_tuple__157 = PyTuple_Pack(4, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_a, __pyx_n_s_cut); if (unlikely(!__pyx_tuple__157)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24921  __Pyx_GOTREF(__pyx_tuple__157);
24922  __Pyx_GIVEREF(__pyx_tuple__157);
24923  __pyx_codeobj__158 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__157, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_tophat, 246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__158)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24924 
24925  /* "WaveTools.pyx":257
24926  * return a
24927  *
24928  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
24929  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
24930  * :param l: array length
24931  */
24932  __pyx_tuple__159 = PyTuple_Pack(5, __pyx_n_s_l, __pyx_n_s_cutoff, __pyx_n_s_npoints, __pyx_n_s_wind, __pyx_n_s_k); if (unlikely(!__pyx_tuple__159)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24933  __Pyx_GOTREF(__pyx_tuple__159);
24934  __Pyx_GIVEREF(__pyx_tuple__159);
24935  __pyx_codeobj__160 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__159, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_costap, 257, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__160)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24936 
24937  /* "WaveTools.pyx":270
24938  * return wind
24939  *
24940  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
24941  * """ This function does a spectral decomposition of a time series with constant sampling.
24942  * It returns a list with results with four entries:
24943  */
24944  __pyx_tuple__161 = PyTuple_Pack(13, __pyx_n_s_time, __pyx_n_s_eta, __pyx_n_s_dt, __pyx_n_s_nfft, __pyx_n_s_results, __pyx_n_s_fft_x, __pyx_n_s_freq, __pyx_n_s_iend, __pyx_n_s_setup, __pyx_n_s_aa, __pyx_n_s_ww, __pyx_n_s_pp, __pyx_n_s_k); if (unlikely(!__pyx_tuple__161)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24945  __Pyx_GOTREF(__pyx_tuple__161);
24946  __Pyx_GIVEREF(__pyx_tuple__161);
24947  __pyx_codeobj__162 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__161, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_decompose_tseries, 270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__162)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24948 
24949  /* "WaveTools.pyx":324
24950  * :phi0: Phase of the wave
24951  * """
24952  * def __init__(self, # <<<<<<<<<<<<<<
24953  * period,
24954  * waveHeight,
24955  */
24956  __pyx_tuple__163 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_period, __pyx_n_s_waveHeight, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_g, __pyx_n_s_waveDir, __pyx_n_s_wavelength, __pyx_n_s_waveType, __pyx_n_s_Ycoeff, __pyx_n_s_Bcoeff, __pyx_n_s_meanVelocity, __pyx_n_s_phi0); if (unlikely(!__pyx_tuple__163)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24957  __Pyx_GOTREF(__pyx_tuple__163);
24958  __Pyx_GIVEREF(__pyx_tuple__163);
24959  __pyx_codeobj__164 = (PyObject*)__Pyx_PyCode_New(13, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__163, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 324, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__164)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24960 
24961  /* "WaveTools.pyx":384
24962  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
24963  * sys.exit(1)
24964  * def eta(self, x, t): # <<<<<<<<<<<<<<
24965  * if self.waveType is "Linear":
24966  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
24967  */
24968  __pyx_tuple__165 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_HH, __pyx_n_s_ii, __pyx_n_s_Y); if (unlikely(!__pyx_tuple__165)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24969  __Pyx_GOTREF(__pyx_tuple__165);
24970  __Pyx_GIVEREF(__pyx_tuple__165);
24971  __pyx_codeobj__166 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__165, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 384, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__166)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24972 
24973  /* "WaveTools.pyx":395
24974  * return HH/self.k
24975  *
24976  * def u(self, x, t): # <<<<<<<<<<<<<<
24977  * if self.waveType is "Linear":
24978  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
24979  */
24980  __pyx_tuple__167 = PyTuple_Pack(10, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Ufenton, __pyx_n_s_ii, __pyx_n_s_B, __pyx_n_s_wmode, __pyx_n_s_kmode, __pyx_n_s_kdir, __pyx_n_s_amp); if (unlikely(!__pyx_tuple__167)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24981  __Pyx_GOTREF(__pyx_tuple__167);
24982  __Pyx_GIVEREF(__pyx_tuple__167);
24983  __pyx_codeobj__168 = (PyObject*)__Pyx_PyCode_New(3, 0, 10, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__167, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 395, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__168)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24984 
24985  /* "WaveTools.pyx":426
24986  * """
24987  *
24988  * def __init__(self, # <<<<<<<<<<<<<<
24989  * Tp,
24990  * Hs,
24991  */
24992  __pyx_tuple__169 = PyTuple_Pack(15, __pyx_n_s_self, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_validSpectra, __pyx_n_s_spec_fun, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__169)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24993  __Pyx_GOTREF(__pyx_tuple__169);
24994  __Pyx_GIVEREF(__pyx_tuple__169);
24995  __pyx_codeobj__170 = (PyObject*)__Pyx_PyCode_New(12, 0, 15, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__169, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 426, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__170)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24996  __pyx_tuple__171 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__171)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
24997  __Pyx_GOTREF(__pyx_tuple__171);
24998  __Pyx_GIVEREF(__pyx_tuple__171);
24999 
25000  /* "WaveTools.pyx":489
25001  * for ii in range(3):
25002  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
25003  * def eta(self, x, t): # <<<<<<<<<<<<<<
25004  * """Free surface displacement
25005  *
25006  */
25007  __pyx_tuple__172 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__172)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25008  __Pyx_GOTREF(__pyx_tuple__172);
25009  __Pyx_GIVEREF(__pyx_tuple__172);
25010  __pyx_codeobj__173 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__172, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__173)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25011 
25012  /* "WaveTools.pyx":500
25013  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25014  *
25015  * def u(self, x, t): # <<<<<<<<<<<<<<
25016  * """x-component of velocity
25017  *
25018  */
25019  __pyx_tuple__174 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__174)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25020  __Pyx_GOTREF(__pyx_tuple__174);
25021  __Pyx_GIVEREF(__pyx_tuple__174);
25022  __pyx_codeobj__175 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__174, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__175)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25023 
25024  /* "WaveTools.pyx":517
25025  * :param Nspectra, number of spectra
25026  * """
25027  * def __init__(self, # <<<<<<<<<<<<<<
25028  * Nspectra,
25029  * Tp, # np array with
25030  */
25031  __pyx_tuple__176 = PyTuple_Pack(17, __pyx_n_s_self, __pyx_n_s_Nspectra, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spectral_params, __pyx_n_s_phi, __pyx_n_s_nn, __pyx_n_s_NN, __pyx_n_s_kk, __pyx_n_s_NN1); if (unlikely(!__pyx_tuple__176)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25032  __Pyx_GOTREF(__pyx_tuple__176);
25033  __Pyx_GIVEREF(__pyx_tuple__176);
25034  __pyx_codeobj__177 = (PyObject*)__Pyx_PyCode_New(13, 0, 17, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__176, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 517, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__177)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25035 
25036  /* "WaveTools.pyx":581
25037  *
25038  *
25039  * def eta(self, x, t): # <<<<<<<<<<<<<<
25040  * """Free surface displacement
25041  *
25042  */
25043  __pyx_tuple__178 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__178)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25044  __Pyx_GOTREF(__pyx_tuple__178);
25045  __Pyx_GIVEREF(__pyx_tuple__178);
25046  __pyx_codeobj__179 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__178, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 581, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__179)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25047 
25048  /* "WaveTools.pyx":592
25049  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25050  *
25051  * def u(self, x, t): # <<<<<<<<<<<<<<
25052  * """x-component of velocity
25053  *
25054  */
25055  __pyx_tuple__180 = PyTuple_Pack(5, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__180)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25056  __Pyx_GOTREF(__pyx_tuple__180);
25057  __Pyx_GIVEREF(__pyx_tuple__180);
25058  __pyx_codeobj__181 = (PyObject*)__Pyx_PyCode_New(3, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__180, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 592, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__181)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25059 
25060  /* "WaveTools.pyx":616
25061  *
25062  * """
25063  * def __init__(self, # <<<<<<<<<<<<<<
25064  * M, #half bin of frequencies
25065  * Tp, # np array with
25066  */
25067  __pyx_tuple__182 = PyTuple_Pack(26, __pyx_n_s_self, __pyx_n_s_M, __pyx_n_s_Tp, __pyx_n_s_Hs, __pyx_n_s_mwl, __pyx_n_s_depth, __pyx_n_s_waveDir0, __pyx_n_s_g, __pyx_n_s_N, __pyx_n_s_bandFactor, __pyx_n_s_spectName, __pyx_n_s_spreadName, __pyx_n_s_spectral_params, __pyx_n_s_spread_params, __pyx_n_s_phi, __pyx_n_s_phiSymm, __pyx_n_s_validSpread, __pyx_n_s_spread_fun, __pyx_n_s_rotation3D, __pyx_n_s_temp_array, __pyx_n_s_directions, __pyx_n_s_rr, __pyx_n_s_theta, __pyx_n_s_i, __pyx_n_s_freq, __pyx_n_s_ii); if (unlikely(!__pyx_tuple__182)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25068  __Pyx_GOTREF(__pyx_tuple__182);
25069  __Pyx_GIVEREF(__pyx_tuple__182);
25070  __pyx_codeobj__183 = (PyObject*)__Pyx_PyCode_New(16, 0, 26, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__182, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 616, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__183)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25071  __pyx_tuple__184 = PyTuple_Pack(4, ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_None), ((PyObject *)Py_False)); if (unlikely(!__pyx_tuple__184)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25072  __Pyx_GOTREF(__pyx_tuple__184);
25073  __Pyx_GIVEREF(__pyx_tuple__184);
25074 
25075  /* "WaveTools.pyx":713
25076  * # Creating amplitudes spectrum
25077  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
25078  * def eta(self, x, t): # <<<<<<<<<<<<<<
25079  * """Free surface displacement
25080  *
25081  */
25082  __pyx_tuple__185 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_jj, __pyx_n_s_ii, __pyx_n_s_kDiri); if (unlikely(!__pyx_tuple__185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25083  __Pyx_GOTREF(__pyx_tuple__185);
25084  __Pyx_GIVEREF(__pyx_tuple__185);
25085  __pyx_codeobj__186 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__185, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_eta, 713, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__186)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25086 
25087  /* "WaveTools.pyx":726
25088  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25089  *
25090  * def u(self, x, t): # <<<<<<<<<<<<<<
25091  * """x-component of velocity
25092  *
25093  */
25094  __pyx_tuple__187 = PyTuple_Pack(7, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_jj, __pyx_n_s_ii, __pyx_n_s_kDiri); if (unlikely(!__pyx_tuple__187)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25095  __Pyx_GOTREF(__pyx_tuple__187);
25096  __Pyx_GIVEREF(__pyx_tuple__187);
25097  __pyx_codeobj__188 = (PyObject*)__Pyx_PyCode_New(3, 0, 7, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__187, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_u, 726, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__188)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25098 
25099  /* "WaveTools.pyx":761
25100  * """
25101  *
25102  * def __init__(self, # <<<<<<<<<<<<<<
25103  * timeSeriesFile, # e.g.= "Timeseries.txt",
25104  * skiprows,
25105  */
25106  __pyx_tuple__189 = PyTuple_Pack(39, __pyx_n_s_self, __pyx_n_s_timeSeriesFile, __pyx_n_s_skiprows, __pyx_n_s_timeSeriesPosition, __pyx_n_s_depth, __pyx_n_s_N, __pyx_n_s_mwl, __pyx_n_s_waveDir, __pyx_n_s_g, __pyx_n_s_rec_direct, __pyx_n_s_window_params, __pyx_n_s_filetype, __pyx_n_s_fid, __pyx_n_s_tdata, __pyx_n_s_ncols, __pyx_n_s_time_temp, __pyx_n_s_doInterp, __pyx_n_s_i, __pyx_n_s_dt_temp, __pyx_n_s_Nf, __pyx_n_s_ipeak, __pyx_n_s_imax, __pyx_n_s_imin, __pyx_n_s_ii, __pyx_n_s_validWindows, __pyx_n_s_wind_filt, __pyx_n_s_diff, __pyx_n_s_jj, __pyx_n_s_span, __pyx_n_s_tfirst, __pyx_n_s_tlast, __pyx_n_s_ispan1, __pyx_n_s_ispan2, __pyx_n_s_tstart, __pyx_n_s_wind, __pyx_n_s_decomp, __pyx_n_s_Nftemp, __pyx_n_s_ki, __pyx_n_s_kDir); if (unlikely(!__pyx_tuple__189)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25107  __Pyx_GOTREF(__pyx_tuple__189);
25108  __Pyx_GIVEREF(__pyx_tuple__189);
25109  __pyx_codeobj__190 = (PyObject*)__Pyx_PyCode_New(11, 0, 39, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__189, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_init, 761, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__190)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25110  __pyx_tuple__191 = PyTuple_Pack(2, ((PyObject *)Py_True), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__191)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25111  __Pyx_GOTREF(__pyx_tuple__191);
25112  __Pyx_GIVEREF(__pyx_tuple__191);
25113 
25114  /* "WaveTools.pyx":1014
25115  * # self.Noverlap = int(self.Npw *0.25)
25116  *
25117  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
25118  * """Free surface displacement
25119  * :param x: floating point x coordinate
25120  */
25121  __pyx_tuple__192 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Eta, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__192)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25122  __Pyx_GOTREF(__pyx_tuple__192);
25123  __Pyx_GIVEREF(__pyx_tuple__192);
25124  __pyx_codeobj__193 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__192, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_etaDirect, 1014, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__193)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25125 
25126  /* "WaveTools.pyx":1024
25127  * return Eta
25128  *
25129  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
25130  * """x-component of velocity
25131  *
25132  */
25133  __pyx_tuple__194 = PyTuple_Pack(6, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_U, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__194)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25134  __Pyx_GOTREF(__pyx_tuple__194);
25135  __Pyx_GIVEREF(__pyx_tuple__194);
25136  __pyx_codeobj__195 = (PyObject*)__Pyx_PyCode_New(3, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__194, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_uDirect, 1024, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__195)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25137 
25138  /* "WaveTools.pyx":1037
25139  * return U
25140  *
25141  * def findWindow(self,t): # <<<<<<<<<<<<<<
25142  * term = 1. - self.handover
25143  * if t-self.time[0] >= term*self.Twindow:
25144  */
25145  __pyx_tuple__196 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_t, __pyx_n_s_term, __pyx_n_s_Nw); if (unlikely(!__pyx_tuple__196)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25146  __Pyx_GOTREF(__pyx_tuple__196);
25147  __Pyx_GIVEREF(__pyx_tuple__196);
25148  __pyx_codeobj__197 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__196, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_findWindow, 1037, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__197)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25149 
25150  /* "WaveTools.pyx":1047
25151  * return Nw
25152  *
25153  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
25154  * """Free surface displacement
25155  * :param x: floating point x coordinate
25156  */
25157  __pyx_tuple__198 = PyTuple_Pack(12, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Nw, __pyx_n_s_ai, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_kDir, __pyx_n_s_t0, __pyx_n_s_Eta, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__198)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25158  __Pyx_GOTREF(__pyx_tuple__198);
25159  __Pyx_GIVEREF(__pyx_tuple__198);
25160  __pyx_codeobj__199 = (PyObject*)__Pyx_PyCode_New(3, 0, 12, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_etaWindow, 1047, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25161 
25162  /* "WaveTools.pyx":1063
25163  * return Eta
25164  *
25165  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
25166  * """x-component of velocity
25167  *
25168  */
25169  __pyx_tuple__200 = PyTuple_Pack(13, __pyx_n_s_self, __pyx_n_s_x, __pyx_n_s_t, __pyx_n_s_Nw, __pyx_n_s_ai, __pyx_n_s_omega, __pyx_n_s_phi, __pyx_n_s_kDir, __pyx_n_s_ki, __pyx_n_s_t0, __pyx_n_s_U, __pyx_n_s_ii, __pyx_n_s_x1); if (unlikely(!__pyx_tuple__200)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25170  __Pyx_GOTREF(__pyx_tuple__200);
25171  __Pyx_GIVEREF(__pyx_tuple__200);
25172  __pyx_codeobj__201 = (PyObject*)__Pyx_PyCode_New(3, 0, 13, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_cekees_proteus_proteus_Wav, __pyx_n_s_uWindow, 1063, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25173  __Pyx_RefNannyFinishContext();
25174  return 0;
25175  __pyx_L1_error:;
25176  __Pyx_RefNannyFinishContext();
25177  return -1;
25178 }
25179 
25180 static int __Pyx_InitGlobals(void) {
25181  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
25182  __pyx_float_0_ = PyFloat_FromDouble(0.); if (unlikely(!__pyx_float_0_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25183  __pyx_float_1_ = PyFloat_FromDouble(1.); if (unlikely(!__pyx_float_1_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25184  __pyx_float_2_ = PyFloat_FromDouble(2.); if (unlikely(!__pyx_float_2_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25185  __pyx_float_4_ = PyFloat_FromDouble(4.); if (unlikely(!__pyx_float_4_)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25186  __pyx_float_0_1 = PyFloat_FromDouble(0.1); if (unlikely(!__pyx_float_0_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25187  __pyx_float_0_5 = PyFloat_FromDouble(0.5); if (unlikely(!__pyx_float_0_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25188  __pyx_float_0_9 = PyFloat_FromDouble(0.9); if (unlikely(!__pyx_float_0_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25189  __pyx_float_1_1 = PyFloat_FromDouble(1.1); if (unlikely(!__pyx_float_1_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25190  __pyx_float_1_9 = PyFloat_FromDouble(1.9); if (unlikely(!__pyx_float_1_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25191  __pyx_float_2_0 = PyFloat_FromDouble(2.0); if (unlikely(!__pyx_float_2_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25192  __pyx_float_3_3 = PyFloat_FromDouble(3.3); if (unlikely(!__pyx_float_3_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25193  __pyx_float_0_07 = PyFloat_FromDouble(0.07); if (unlikely(!__pyx_float_0_07)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25194  __pyx_float_0_09 = PyFloat_FromDouble(0.09); if (unlikely(!__pyx_float_0_09)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25195  __pyx_float_0_23 = PyFloat_FromDouble(0.23); if (unlikely(!__pyx_float_0_23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25196  __pyx_float_0_25 = PyFloat_FromDouble(0.25); if (unlikely(!__pyx_float_0_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25197  __pyx_float_9_81 = PyFloat_FromDouble(9.81); if (unlikely(!__pyx_float_9_81)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25198  __pyx_float_0_025 = PyFloat_FromDouble(0.025); if (unlikely(!__pyx_float_0_025)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25199  __pyx_float_0_185 = PyFloat_FromDouble(0.185); if (unlikely(!__pyx_float_0_185)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25200  __pyx_float_1_094 = PyFloat_FromDouble(1.094); if (unlikely(!__pyx_float_1_094)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25201  __pyx_float_1eneg_10 = PyFloat_FromDouble(1e-10); if (unlikely(!__pyx_float_1eneg_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25202  __pyx_float_0_0336 = PyFloat_FromDouble(0.0336); if (unlikely(!__pyx_float_0_0336)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25203  __pyx_float_0_0624 = PyFloat_FromDouble(0.0624); if (unlikely(!__pyx_float_0_0624)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25204  __pyx_float_0_01915 = PyFloat_FromDouble(0.01915); if (unlikely(!__pyx_float_0_01915)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25205  __pyx_float_neg_2_5 = PyFloat_FromDouble(-2.5); if (unlikely(!__pyx_float_neg_2_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25206  __pyx_float_neg_1_25 = PyFloat_FromDouble(-1.25); if (unlikely(!__pyx_float_neg_1_25)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25207  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25208  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25209  __pyx_int_2 = PyInt_FromLong(2); if (unlikely(!__pyx_int_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25210  __pyx_int_3 = PyInt_FromLong(3); if (unlikely(!__pyx_int_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25211  __pyx_int_4 = PyInt_FromLong(4); if (unlikely(!__pyx_int_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25212  __pyx_int_5 = PyInt_FromLong(5); if (unlikely(!__pyx_int_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25213  __pyx_int_10 = PyInt_FromLong(10); if (unlikely(!__pyx_int_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25214  __pyx_int_100 = PyInt_FromLong(100); if (unlikely(!__pyx_int_100)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25215  __pyx_int_1000 = PyInt_FromLong(1000); if (unlikely(!__pyx_int_1000)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25216  __pyx_int_neg_1 = PyInt_FromLong(-1); if (unlikely(!__pyx_int_neg_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25217  __pyx_int_neg_4 = PyInt_FromLong(-4); if (unlikely(!__pyx_int_neg_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25218  return 0;
25219  __pyx_L1_error:;
25220  return -1;
25221 }
25222 
25223 #if PY_MAJOR_VERSION < 3
25224 PyMODINIT_FUNC initWaveTools(void); /*proto*/
25225 PyMODINIT_FUNC initWaveTools(void)
25226 #else
25227 PyMODINIT_FUNC PyInit_WaveTools(void); /*proto*/
25228 PyMODINIT_FUNC PyInit_WaveTools(void)
25229 #endif
25230 {
25231  PyObject *__pyx_t_1 = NULL;
25232  PyObject *__pyx_t_2 = NULL;
25233  PyObject *__pyx_t_3 = NULL;
25234  PyObject *__pyx_t_4 = NULL;
25235  PyObject *__pyx_t_5 = NULL;
25236  PyObject *__pyx_t_6 = NULL;
25237  PyObject *__pyx_t_7 = NULL;
25238  int __pyx_lineno = 0;
25239  const char *__pyx_filename = NULL;
25240  int __pyx_clineno = 0;
25241  __Pyx_RefNannyDeclarations
25242  #if CYTHON_REFNANNY
25243  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
25244  if (!__Pyx_RefNanny) {
25245  PyErr_Clear();
25246  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
25247  if (!__Pyx_RefNanny)
25248  Py_FatalError("failed to import 'refnanny' module");
25249  }
25250  #endif
25251  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_WaveTools(void)", 0);
25252  if (__Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25253  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25254  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25255  #ifdef __Pyx_CyFunction_USED
25256  if (__pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25257  #endif
25258  #ifdef __Pyx_FusedFunction_USED
25259  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25260  #endif
25261  #ifdef __Pyx_Coroutine_USED
25262  if (__pyx_Coroutine_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25263  #endif
25264  #ifdef __Pyx_Generator_USED
25265  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25266  #endif
25267  #ifdef __Pyx_StopAsyncIteration_USED
25268  if (__pyx_StopAsyncIteration_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25269  #endif
25270  /*--- Library function declarations ---*/
25271  /*--- Threads initialization code ---*/
25272  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
25273  #ifdef WITH_THREAD /* Python build with threading support? */
25274  PyEval_InitThreads();
25275  #endif
25276  #endif
25277  /*--- Module creation code ---*/
25278  #if PY_MAJOR_VERSION < 3
25279  __pyx_m = Py_InitModule4("WaveTools", __pyx_methods, __pyx_k_Tools_for_working_with_water_wav, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
25280  #else
25281  __pyx_m = PyModule_Create(&__pyx_moduledef);
25282  #endif
25283  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25284  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25285  Py_INCREF(__pyx_d);
25286  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25287  #if CYTHON_COMPILING_IN_PYPY
25288  Py_INCREF(__pyx_b);
25289  #endif
25290  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
25291  /*--- Initialize various global constants etc. ---*/
25292  if (__Pyx_InitGlobals() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25293  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
25294  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25295  #endif
25296  if (__pyx_module_is_main_WaveTools) {
25297  if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25298  }
25299  #if PY_MAJOR_VERSION >= 3
25300  {
25301  PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25302  if (!PyDict_GetItemString(modules, "WaveTools")) {
25303  if (unlikely(PyDict_SetItemString(modules, "WaveTools", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25304  }
25305  }
25306  #endif
25307  /*--- Builtin init code ---*/
25308  if (__Pyx_InitCachedBuiltins() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25309  /*--- Constants init code ---*/
25310  if (__Pyx_InitCachedConstants() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25311  /*--- Global init code ---*/
25312  /*--- Variable export code ---*/
25313  /*--- Function export code ---*/
25314  /*--- Type init code ---*/
25315  /*--- Type import code ---*/
25316  /*--- Variable import code ---*/
25317  /*--- Function import code ---*/
25318  /*--- Execution code ---*/
25319  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
25320  if (__Pyx_patch_abc() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25321  #endif
25322 
25323  /* "WaveTools.pyx":13
25324  * :parts: 2
25325  * """
25326  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh # <<<<<<<<<<<<<<
25327  * import numpy as np
25328  * import cmath as cmath
25329  */
25330  __pyx_t_1 = PyList_New(9); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25331  __Pyx_GOTREF(__pyx_t_1);
25332  __Pyx_INCREF(__pyx_n_s_pi);
25333  __Pyx_GIVEREF(__pyx_n_s_pi);
25334  PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_pi);
25335  __Pyx_INCREF(__pyx_n_s_tanh);
25336  __Pyx_GIVEREF(__pyx_n_s_tanh);
25337  PyList_SET_ITEM(__pyx_t_1, 1, __pyx_n_s_tanh);
25338  __Pyx_INCREF(__pyx_n_s_sqrt);
25339  __Pyx_GIVEREF(__pyx_n_s_sqrt);
25340  PyList_SET_ITEM(__pyx_t_1, 2, __pyx_n_s_sqrt);
25341  __Pyx_INCREF(__pyx_n_s_exp);
25342  __Pyx_GIVEREF(__pyx_n_s_exp);
25343  PyList_SET_ITEM(__pyx_t_1, 3, __pyx_n_s_exp);
25344  __Pyx_INCREF(__pyx_n_s_log);
25345  __Pyx_GIVEREF(__pyx_n_s_log);
25346  PyList_SET_ITEM(__pyx_t_1, 4, __pyx_n_s_log);
25347  __Pyx_INCREF(__pyx_n_s_sin);
25348  __Pyx_GIVEREF(__pyx_n_s_sin);
25349  PyList_SET_ITEM(__pyx_t_1, 5, __pyx_n_s_sin);
25350  __Pyx_INCREF(__pyx_n_s_cos);
25351  __Pyx_GIVEREF(__pyx_n_s_cos);
25352  PyList_SET_ITEM(__pyx_t_1, 6, __pyx_n_s_cos);
25353  __Pyx_INCREF(__pyx_n_s_cosh);
25354  __Pyx_GIVEREF(__pyx_n_s_cosh);
25355  PyList_SET_ITEM(__pyx_t_1, 7, __pyx_n_s_cosh);
25356  __Pyx_INCREF(__pyx_n_s_sinh);
25357  __Pyx_GIVEREF(__pyx_n_s_sinh);
25358  PyList_SET_ITEM(__pyx_t_1, 8, __pyx_n_s_sinh);
25359  __pyx_t_2 = __Pyx_Import(__pyx_n_s_math, __pyx_t_1, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25360  __Pyx_GOTREF(__pyx_t_2);
25361  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25362  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_pi); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25363  __Pyx_GOTREF(__pyx_t_1);
25364  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pi, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25365  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25366  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_tanh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25367  __Pyx_GOTREF(__pyx_t_1);
25368  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tanh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25369  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25370  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sqrt); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25371  __Pyx_GOTREF(__pyx_t_1);
25372  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sqrt, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25373  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25374  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_exp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25375  __Pyx_GOTREF(__pyx_t_1);
25376  if (PyDict_SetItem(__pyx_d, __pyx_n_s_exp, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25377  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25378  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25379  __Pyx_GOTREF(__pyx_t_1);
25380  if (PyDict_SetItem(__pyx_d, __pyx_n_s_log, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25381  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25382  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sin); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25383  __Pyx_GOTREF(__pyx_t_1);
25384  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sin, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25385  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25386  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_cos); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25387  __Pyx_GOTREF(__pyx_t_1);
25388  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25389  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25390  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_cosh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25391  __Pyx_GOTREF(__pyx_t_1);
25392  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cosh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25393  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25394  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_sinh); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25395  __Pyx_GOTREF(__pyx_t_1);
25396  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sinh, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 13; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25397  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25398  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25399 
25400  /* "WaveTools.pyx":14
25401  * """
25402  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh
25403  * import numpy as np # <<<<<<<<<<<<<<
25404  * import cmath as cmath
25405  * from Profiling import logEvent
25406  */
25407  __pyx_t_2 = __Pyx_Import(__pyx_n_s_numpy, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25408  __Pyx_GOTREF(__pyx_t_2);
25409  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 14; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25410  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25411 
25412  /* "WaveTools.pyx":15
25413  * from math import pi, tanh, sqrt, exp, log, sin, cos, cosh, sinh
25414  * import numpy as np
25415  * import cmath as cmath # <<<<<<<<<<<<<<
25416  * from Profiling import logEvent
25417  * import time as tt
25418  */
25419  __pyx_t_2 = __Pyx_Import(__pyx_n_s_cmath, 0, -1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25420  __Pyx_GOTREF(__pyx_t_2);
25421  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cmath, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 15; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25422  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25423 
25424  /* "WaveTools.pyx":16
25425  * import numpy as np
25426  * import cmath as cmath
25427  * from Profiling import logEvent # <<<<<<<<<<<<<<
25428  * import time as tt
25429  * import sys as sys
25430  */
25431  __pyx_t_2 = PyList_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25432  __Pyx_GOTREF(__pyx_t_2);
25433  __Pyx_INCREF(__pyx_n_s_logEvent);
25434  __Pyx_GIVEREF(__pyx_n_s_logEvent);
25435  PyList_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_logEvent);
25436  __pyx_t_1 = __Pyx_Import(__pyx_n_s_Profiling, __pyx_t_2, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25437  __Pyx_GOTREF(__pyx_t_1);
25438  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25439  __pyx_t_2 = __Pyx_ImportFrom(__pyx_t_1, __pyx_n_s_logEvent); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25440  __Pyx_GOTREF(__pyx_t_2);
25441  if (PyDict_SetItem(__pyx_d, __pyx_n_s_logEvent, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 16; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25442  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25443  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25444 
25445  /* "WaveTools.pyx":17
25446  * import cmath as cmath
25447  * from Profiling import logEvent
25448  * import time as tt # <<<<<<<<<<<<<<
25449  * import sys as sys
25450  *
25451  */
25452  __pyx_t_1 = __Pyx_Import(__pyx_n_s_time, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25453  __Pyx_GOTREF(__pyx_t_1);
25454  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tt, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 17; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25455  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25456 
25457  /* "WaveTools.pyx":18
25458  * from Profiling import logEvent
25459  * import time as tt
25460  * import sys as sys # <<<<<<<<<<<<<<
25461  *
25462  *
25463  */
25464  __pyx_t_1 = __Pyx_Import(__pyx_n_s_sys, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25465  __Pyx_GOTREF(__pyx_t_1);
25466  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sys, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 18; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25467  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25468 
25469  /* "WaveTools.pyx":21
25470  *
25471  *
25472  * def loadExistingFunction(funcName, validFunctions): # <<<<<<<<<<<<<<
25473  * """ Checks if a function name is present in a list of known functions, returns system exit if not present
25474  * param: funcName : function name in form of string under consideration
25475  */
25476  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_1loadExistingFunction, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25477  __Pyx_GOTREF(__pyx_t_1);
25478  if (PyDict_SetItem(__pyx_d, __pyx_n_s_loadExistingFunction, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 21; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25479  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25480 
25481  /* "WaveTools.pyx":39
25482  *
25483  *
25484  * def setVertDir(g): # <<<<<<<<<<<<<<
25485  * """ Sets the unit vector for the vertical direction, opposite to the gravity vector
25486  * param: g : gravitational acceleration vector [L/T^2] (must have 3 components)
25487  */
25488  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_3setVertDir, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25489  __Pyx_GOTREF(__pyx_t_1);
25490  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setVertDir, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25491  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25492 
25493  /* "WaveTools.pyx":45
25494  * return -g/(sqrt(g[0]**2 + g[1]**2 + g[2]**2))
25495  *
25496  * def setDirVector(vector): # <<<<<<<<<<<<<<
25497  * """ Returns the direction of a vector in the form of a unit vector
25498  * param: vector : Any vector with three components
25499  */
25500  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_5setDirVector, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25501  __Pyx_GOTREF(__pyx_t_1);
25502  if (PyDict_SetItem(__pyx_d, __pyx_n_s_setDirVector, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25503  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25504 
25505  /* "WaveTools.pyx":51
25506  * return vector/(sqrt(vector[0]**2 + vector[1]**2 + vector[2]**2))
25507  *
25508  * def dirCheck(v1, v2): # <<<<<<<<<<<<<<
25509  * """ Checks if to vectors are vertical and returns system exit if not
25510  * param: v1 : 1st vector [-] with three components
25511  */
25512  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_7dirCheck, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25513  __Pyx_GOTREF(__pyx_t_1);
25514  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dirCheck, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25515  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25516 
25517  /* "WaveTools.pyx":63
25518  * else:
25519  * return None
25520  * def reduceToIntervals(fi,df): # <<<<<<<<<<<<<<
25521  * """ Prepares the x- axis array of size N for numerical integration along he x- axis.
25522  * If fi = [a1, a2, a3,...,a_N-1 a_N] then it returns the array
25523  */
25524  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_9reduceToIntervals, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25525  __Pyx_GOTREF(__pyx_t_1);
25526  if (PyDict_SetItem(__pyx_d, __pyx_n_s_reduceToIntervals, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25527  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25528 
25529  /* "WaveTools.pyx":72
25530  * fim_tmp = (0.5*(fi[1:]+fi[:-1])).tolist()
25531  * return np.array([fim_tmp[0]-0.5*df]+fim_tmp+[fim_tmp[-1]+0.5*df])
25532  * def returnRectangles(a,x): # <<<<<<<<<<<<<<
25533  * """ Returns \delta y of y(x) using the rectangle method (\delta y = 0.5*(a_n-1+a_n)*(x_n-1-x_n)
25534  * param: a : y(x) function [-]
25535  */
25536  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_11returnRectangles, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25537  __Pyx_GOTREF(__pyx_t_1);
25538  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25539  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25540 
25541  /* "WaveTools.pyx":78
25542  * """
25543  * return 0.5*(a[1:]+a[:-1])*(x[1:]-x[:-1])
25544  * def returnRectangles3D(a,x,y): # <<<<<<<<<<<<<<
25545  * """ Returns \delta y of y(x,z) using the rectangle method
25546  * \delta y = 0.25*(a_(n-1,m-1)+a_(n,m-1)+a_(n-1,m)+a_(n,m))*(x_n-1-x_n) *(z_m-1-z_m)
25547  */
25548  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_13returnRectangles3D, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25549  __Pyx_GOTREF(__pyx_t_1);
25550  if (PyDict_SetItem(__pyx_d, __pyx_n_s_returnRectangles3D, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25551  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25552 
25553  /* "WaveTools.pyx":92
25554  * ai[:,jj] *= (x[1:]-x[:-1])
25555  * return ai
25556  * def normIntegral(Sint,th): # <<<<<<<<<<<<<<
25557  * """Given an Sint(th) function, it returns Sint_n, such as \int (Sint_n dth = 1)
25558  * param: Sint : Sint(th) function [-]
25559  */
25560  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_15normIntegral, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25561  __Pyx_GOTREF(__pyx_t_1);
25562  if (PyDict_SetItem(__pyx_d, __pyx_n_s_normIntegral, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 92; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25563  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25564 
25565  /* "WaveTools.pyx":102
25566  *
25567  *
25568  * def eta_mode(x, t, kDir, omega, phi, amplitude): # <<<<<<<<<<<<<<
25569  * """Returns a single frequency mode for free-surface elevation at point x,y,z,t
25570  * :param kDir: wave number vector [1/L] with three components
25571  */
25572  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_17eta_mode, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25573  __Pyx_GOTREF(__pyx_t_1);
25574  if (PyDict_SetItem(__pyx_d, __pyx_n_s_eta_mode, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25575  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25576 
25577  /* "WaveTools.pyx":113
25578  *
25579  *
25580  * def vel_mode(x, t, kDir, kAbs, omega, phi, amplitude, mwl, depth, g, vDir): # <<<<<<<<<<<<<<
25581  * """Returns a single frequency mode for velocity at point x,y,z,t
25582  * :param kDir: wave number vector [1/L] with three components
25583  */
25584  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_19vel_mode, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25585  __Pyx_GOTREF(__pyx_t_1);
25586  if (PyDict_SetItem(__pyx_d, __pyx_n_s_vel_mode, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25587  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25588 
25589  /* "WaveTools.pyx":142
25590  *
25591  *
25592  * def sigma(omega,omega0): # <<<<<<<<<<<<<<
25593  * """sigma function for JONSWAP spectrum
25594  * http://www.wikiwaves.org/Ocean-Wave_Sectra
25595  */
25596  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_21sigma, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25597  __Pyx_GOTREF(__pyx_t_1);
25598  if (PyDict_SetItem(__pyx_d, __pyx_n_s_sigma, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25599  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25600 
25601  /* "WaveTools.pyx":150
25602  *
25603  *
25604  * def JONSWAP(f,f0,Hs,gamma=3.3,TMA=False, depth = None): # <<<<<<<<<<<<<<
25605  * """The wave spectrum from Joint North Sea Wave Observation Project
25606  * Jonswap equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.12 - 2.15
25607  */
25608  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_23JONSWAP, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25609  __Pyx_GOTREF(__pyx_t_1);
25610  if (PyDict_SetItem(__pyx_d, __pyx_n_s_JONSWAP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25611  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25612 
25613  /* "WaveTools.pyx":174
25614  * return tma * bj*(Hs**2)*(1./((Tp**4) *(f**5)))*np.exp(-1.25*(1./(Tp*f)**(4.)))*(gamma**r)
25615  *
25616  * def PM_mod(f,f0,Hs): # <<<<<<<<<<<<<<
25617  * """modified Pierson-Moskovitz spectrum (or Bretschneider or ISSC)
25618  * Reference http://www.orcina.com/SoftwareProducts/OrcaFlex/Documentation/Help/Content/html/Waves,WaveSpectra.htm
25619  */
25620  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_25PM_mod, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25621  __Pyx_GOTREF(__pyx_t_1);
25622  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PM_mod, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25623  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25624 
25625  /* "WaveTools.pyx":186
25626  * return (5.0/16.0)*Hs**2*(f0**4/f**5)*np.exp((-5.0/4.0)*(f0/f)**4)
25627  *
25628  * def cos2s(theta,f,s=10): # <<<<<<<<<<<<<<
25629  * """The cos2s wave directional Spread
25630  * see USACE - CETN-I-28 http://chl.erdc.usace.army.mil/library/publications/chetn/pdf/cetn-i-28.pdf
25631  */
25632  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_27cos2s, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25633  __Pyx_GOTREF(__pyx_t_1);
25634  if (PyDict_SetItem(__pyx_d, __pyx_n_s_cos2s, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25635  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25636 
25637  /* "WaveTools.pyx":197
25638  * fun[:,ii] = np.cos(theta/2)**(2*s)
25639  * return fun
25640  * def mitsuyasu(theta,fi,f0,smax=10): # <<<<<<<<<<<<<<
25641  * """The cos2s wave directional spread with wave frequency dependency (mitsuyasu spread)
25642  * Equation from "Random Seas and Design of Maritime Structures" - Y. Goda - 2010 (3rd ed) eq. 2.22 - 2.25
25643  */
25644  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_29mitsuyasu, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25645  __Pyx_GOTREF(__pyx_t_1);
25646  if (PyDict_SetItem(__pyx_d, __pyx_n_s_mitsuyasu, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25647  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25648 
25649  /* "WaveTools.pyx":217
25650  *
25651  *
25652  * def dispersion(w,d, g = 9.81,niter = 1000): # <<<<<<<<<<<<<<
25653  * """Calculates wave number magnitude as a scallar or an arry of modes linear dispersion relation
25654  *
25655  */
25656  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_31dispersion, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25657  __Pyx_GOTREF(__pyx_t_1);
25658  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dispersion, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25659  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25660 
25661  /* "WaveTools.pyx":246
25662  *
25663  *
25664  * def tophat(l,cutoff): # <<<<<<<<<<<<<<
25665  * """ returns a top hat filter
25666  * :param l: array length
25667  */
25668  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_33tophat, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25669  __Pyx_GOTREF(__pyx_t_1);
25670  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tophat, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25671  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25672 
25673  /* "WaveTools.pyx":257
25674  * return a
25675  *
25676  * def costap(l,cutoff=0.1): # <<<<<<<<<<<<<<
25677  * """ Cosine taper filter Goda (2010), Random Seas and Design of Maritime Structures equation 11.40
25678  * :param l: array length
25679  */
25680  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_35costap, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25681  __Pyx_GOTREF(__pyx_t_1);
25682  if (PyDict_SetItem(__pyx_d, __pyx_n_s_costap, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25683  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25684 
25685  /* "WaveTools.pyx":270
25686  * return wind
25687  *
25688  * def decompose_tseries(time,eta,dt): # <<<<<<<<<<<<<<
25689  * """ This function does a spectral decomposition of a time series with constant sampling.
25690  * It returns a list with results with four entries:
25691  */
25692  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_9WaveTools_37decompose_tseries, NULL, __pyx_n_s_WaveTools); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25693  __Pyx_GOTREF(__pyx_t_1);
25694  if (PyDict_SetItem(__pyx_d, __pyx_n_s_decompose_tseries, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25695  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25696 
25697  /* "WaveTools.pyx":308
25698  *
25699  *
25700  * class MonochromaticWaves: # <<<<<<<<<<<<<<
25701  * """Generate a monochromatic wave train in the linear regime
25702  * :param period: Monochromatic wave period
25703  */
25704  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_MonochromaticWaves, __pyx_n_s_MonochromaticWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_monochromatic_wave_tr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25705  __Pyx_GOTREF(__pyx_t_1);
25706 
25707  /* "WaveTools.pyx":324
25708  * :phi0: Phase of the wave
25709  * """
25710  * def __init__(self, # <<<<<<<<<<<<<<
25711  * period,
25712  * waveHeight,
25713  */
25714  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_1__init__, 0, __pyx_n_s_MonochromaticWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__164)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25715  __Pyx_GOTREF(__pyx_t_2);
25716  if (!__Pyx_CyFunction_InitDefaults(__pyx_t_2, sizeof(__pyx_defaults), 1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25717 
25718  /* "WaveTools.pyx":334
25719  * waveType="Linear",
25720  * Ycoeff = None,
25721  * Bcoeff =None, meanVelocity = np.array([0.,0,0.]), # <<<<<<<<<<<<<<
25722  * phi0 = 0.):
25723  *
25724  */
25725  __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_np); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25726  __Pyx_GOTREF(__pyx_t_4);
25727  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25728  __Pyx_GOTREF(__pyx_t_5);
25729  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25730  __pyx_t_4 = PyList_New(3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25731  __Pyx_GOTREF(__pyx_t_4);
25732  __Pyx_INCREF(__pyx_float_0_);
25733  __Pyx_GIVEREF(__pyx_float_0_);
25734  PyList_SET_ITEM(__pyx_t_4, 0, __pyx_float_0_);
25735  __Pyx_INCREF(__pyx_int_0);
25736  __Pyx_GIVEREF(__pyx_int_0);
25737  PyList_SET_ITEM(__pyx_t_4, 1, __pyx_int_0);
25738  __Pyx_INCREF(__pyx_float_0_);
25739  __Pyx_GIVEREF(__pyx_float_0_);
25740  PyList_SET_ITEM(__pyx_t_4, 2, __pyx_float_0_);
25741  __pyx_t_6 = NULL;
25742  if (CYTHON_COMPILING_IN_CPYTHON && unlikely(PyMethod_Check(__pyx_t_5))) {
25743  __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
25744  if (likely(__pyx_t_6)) {
25745  PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
25746  __Pyx_INCREF(__pyx_t_6);
25747  __Pyx_INCREF(function);
25748  __Pyx_DECREF_SET(__pyx_t_5, function);
25749  }
25750  }
25751  if (!__pyx_t_6) {
25752  __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25753  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
25754  __Pyx_GOTREF(__pyx_t_3);
25755  } else {
25756  __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25757  __Pyx_GOTREF(__pyx_t_7);
25758  __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6); __pyx_t_6 = NULL;
25759  __Pyx_GIVEREF(__pyx_t_4);
25760  PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_4);
25761  __pyx_t_4 = 0;
25762  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25763  __Pyx_GOTREF(__pyx_t_3);
25764  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
25765  }
25766  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25767  __Pyx_CyFunction_Defaults(__pyx_defaults, __pyx_t_2)->__pyx_arg_meanVelocity = __pyx_t_3;
25768  __Pyx_GIVEREF(__pyx_t_3);
25769  __pyx_t_3 = 0;
25770  __Pyx_CyFunction_SetDefaultsGetter(__pyx_t_2, __pyx_pf_9WaveTools_18MonochromaticWaves_6__defaults__);
25771  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25772  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25773 
25774  /* "WaveTools.pyx":384
25775  * logEvent("WaveTools.py: Need to define Ycoeff and Bcoeff (free-surface and velocity) for nonlinear waves",level=0)
25776  * sys.exit(1)
25777  * def eta(self, x, t): # <<<<<<<<<<<<<<
25778  * if self.waveType is "Linear":
25779  * return eta_mode(x,t,self.kDir,self.omega,self.phi0,self.amplitude)
25780  */
25781  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_3eta, 0, __pyx_n_s_MonochromaticWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__166)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25782  __Pyx_GOTREF(__pyx_t_2);
25783  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_eta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25784  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25785 
25786  /* "WaveTools.pyx":395
25787  * return HH/self.k
25788  *
25789  * def u(self, x, t): # <<<<<<<<<<<<<<
25790  * if self.waveType is "Linear":
25791  * return vel_mode(x, t, self.kDir,self.k,self.omega,self.phi0,self.amplitude,self.mwl,self.depth,self.g,self.vDir)
25792  */
25793  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_18MonochromaticWaves_5u, 0, __pyx_n_s_MonochromaticWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__168)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25794  __Pyx_GOTREF(__pyx_t_2);
25795  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_u, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25796  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25797 
25798  /* "WaveTools.pyx":308
25799  *
25800  *
25801  * class MonochromaticWaves: # <<<<<<<<<<<<<<
25802  * """Generate a monochromatic wave train in the linear regime
25803  * :param period: Monochromatic wave period
25804  */
25805  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_MonochromaticWaves, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25806  __Pyx_GOTREF(__pyx_t_2);
25807  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MonochromaticWaves, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25808  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25809  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25810 
25811  /* "WaveTools.pyx":411
25812  *
25813  *
25814  * class RandomWaves: # <<<<<<<<<<<<<<
25815  * """Generate approximate random wave solutions
25816  * :param Tp: frequency [1/T]
25817  */
25818  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_RandomWaves, __pyx_n_s_RandomWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_approximate_random_wave); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25819  __Pyx_GOTREF(__pyx_t_1);
25820 
25821  /* "WaveTools.pyx":426
25822  * """
25823  *
25824  * def __init__(self, # <<<<<<<<<<<<<<
25825  * Tp,
25826  * Hs,
25827  */
25828  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_1__init__, 0, __pyx_n_s_RandomWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__170)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25829  __Pyx_GOTREF(__pyx_t_2);
25830  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__171);
25831  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25832  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25833 
25834  /* "WaveTools.pyx":489
25835  * for ii in range(3):
25836  * self.kDir[:,ii] = self.ki[:] * self.waveDir[ii]
25837  * def eta(self, x, t): # <<<<<<<<<<<<<<
25838  * """Free surface displacement
25839  *
25840  */
25841  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_3eta, 0, __pyx_n_s_RandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__173)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25842  __Pyx_GOTREF(__pyx_t_2);
25843  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_eta, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25844  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25845 
25846  /* "WaveTools.pyx":500
25847  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25848  *
25849  * def u(self, x, t): # <<<<<<<<<<<<<<
25850  * """x-component of velocity
25851  *
25852  */
25853  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_11RandomWaves_5u, 0, __pyx_n_s_RandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__175)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25854  __Pyx_GOTREF(__pyx_t_2);
25855  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_u, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25856  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25857 
25858  /* "WaveTools.pyx":411
25859  *
25860  *
25861  * class RandomWaves: # <<<<<<<<<<<<<<
25862  * """Generate approximate random wave solutions
25863  * :param Tp: frequency [1/T]
25864  */
25865  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_RandomWaves, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25866  __Pyx_GOTREF(__pyx_t_2);
25867  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RandomWaves, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25868  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25869  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25870 
25871  /* "WaveTools.pyx":512
25872  * return U
25873  *
25874  * class MultiSpectraRandomWaves(RandomWaves): # <<<<<<<<<<<<<<
25875  * """Generate a random wave timeseries from multiple spectra.
25876  * Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)
25877  */
25878  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25879  __Pyx_GOTREF(__pyx_t_1);
25880  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25881  __Pyx_GOTREF(__pyx_t_2);
25882  __Pyx_GIVEREF(__pyx_t_1);
25883  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
25884  __pyx_t_1 = 0;
25885  __pyx_t_1 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25886  __Pyx_GOTREF(__pyx_t_1);
25887  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_1, __pyx_t_2, __pyx_n_s_MultiSpectraRandomWaves, __pyx_n_s_MultiSpectraRandomWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_random_wave_timeserie); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25888  __Pyx_GOTREF(__pyx_t_3);
25889 
25890  /* "WaveTools.pyx":517
25891  * :param Nspectra, number of spectra
25892  * """
25893  * def __init__(self, # <<<<<<<<<<<<<<
25894  * Nspectra,
25895  * Tp, # np array with
25896  */
25897  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_1__init__, 0, __pyx_n_s_MultiSpectraRandomWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__177)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25898  __Pyx_GOTREF(__pyx_t_5);
25899  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25900  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25901 
25902  /* "WaveTools.pyx":581
25903  *
25904  *
25905  * def eta(self, x, t): # <<<<<<<<<<<<<<
25906  * """Free surface displacement
25907  *
25908  */
25909  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_3eta, 0, __pyx_n_s_MultiSpectraRandomWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__179)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25910  __Pyx_GOTREF(__pyx_t_5);
25911  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_eta, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25912  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25913 
25914  /* "WaveTools.pyx":592
25915  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25916  *
25917  * def u(self, x, t): # <<<<<<<<<<<<<<
25918  * """x-component of velocity
25919  *
25920  */
25921  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_23MultiSpectraRandomWaves_5u, 0, __pyx_n_s_MultiSpectraRandomWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__181)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25922  __Pyx_GOTREF(__pyx_t_5);
25923  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_u, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 592; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25924  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25925 
25926  /* "WaveTools.pyx":512
25927  * return U
25928  *
25929  * class MultiSpectraRandomWaves(RandomWaves): # <<<<<<<<<<<<<<
25930  * """Generate a random wave timeseries from multiple spectra.
25931  * Same input parameters as RandomWaves class but they have to be all in lists with the same lenght as the spectra (except from g!)
25932  */
25933  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_1, __pyx_n_s_MultiSpectraRandomWaves, __pyx_t_2, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25934  __Pyx_GOTREF(__pyx_t_5);
25935  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MultiSpectraRandomWaves, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25936  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25937  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
25938  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
25939  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
25940 
25941  /* "WaveTools.pyx":606
25942  *
25943  *
25944  * class DirectionalWaves(RandomWaves): # <<<<<<<<<<<<<<
25945  * """Generate a random wave timeseries from directional waves
25946  * Same input parameters as RandomWaves with the addition of:
25947  */
25948  __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_RandomWaves); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25949  __Pyx_GOTREF(__pyx_t_2);
25950  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25951  __Pyx_GOTREF(__pyx_t_1);
25952  __Pyx_GIVEREF(__pyx_t_2);
25953  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
25954  __pyx_t_2 = 0;
25955  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25956  __Pyx_GOTREF(__pyx_t_2);
25957  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_DirectionalWaves, __pyx_n_s_DirectionalWaves, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_random_wave_timeserie_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25958  __Pyx_GOTREF(__pyx_t_3);
25959 
25960  /* "WaveTools.pyx":616
25961  *
25962  * """
25963  * def __init__(self, # <<<<<<<<<<<<<<
25964  * M, #half bin of frequencies
25965  * Tp, # np array with
25966  */
25967  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_1__init__, 0, __pyx_n_s_DirectionalWaves___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__183)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25968  __Pyx_GOTREF(__pyx_t_5);
25969  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_5, __pyx_tuple__184);
25970  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_init, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25971  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25972 
25973  /* "WaveTools.pyx":713
25974  * # Creating amplitudes spectrum
25975  * self.aiDirs[:] = np.sqrt(2.*returnRectangles3D(self.Si_Sp,self.theta_m,self.fim))
25976  * def eta(self, x, t): # <<<<<<<<<<<<<<
25977  * """Free surface displacement
25978  *
25979  */
25980  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_3eta, 0, __pyx_n_s_DirectionalWaves_eta, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__186)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25981  __Pyx_GOTREF(__pyx_t_5);
25982  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_eta, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 713; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25983  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25984 
25985  /* "WaveTools.pyx":726
25986  * # return (self.ai*np.cos(2.0*pi*self.fi*t - self.ki*x + self.phi)).sum()
25987  *
25988  * def u(self, x, t): # <<<<<<<<<<<<<<
25989  * """x-component of velocity
25990  *
25991  */
25992  __pyx_t_5 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_16DirectionalWaves_5u, 0, __pyx_n_s_DirectionalWaves_u, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__188)); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25993  __Pyx_GOTREF(__pyx_t_5);
25994  if (PyObject_SetItem(__pyx_t_3, __pyx_n_s_u, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
25995  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
25996 
25997  /* "WaveTools.pyx":606
25998  *
25999  *
26000  * class DirectionalWaves(RandomWaves): # <<<<<<<<<<<<<<
26001  * """Generate a random wave timeseries from directional waves
26002  * Same input parameters as RandomWaves with the addition of:
26003  */
26004  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_DirectionalWaves, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26005  __Pyx_GOTREF(__pyx_t_5);
26006  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DirectionalWaves, __pyx_t_5) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26007  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
26008  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
26009  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26010  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26011 
26012  /* "WaveTools.pyx":747
26013  *
26014  *
26015  * class TimeSeries: # <<<<<<<<<<<<<<
26016  * """Generate a time series by using spectral windowing method.
26017  * :param timeSeriesFile: Time series file name
26018  */
26019  __pyx_t_1 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_empty_tuple, __pyx_n_s_TimeSeries, __pyx_n_s_TimeSeries, (PyObject *) NULL, __pyx_n_s_WaveTools, __pyx_kp_s_Generate_a_time_series_by_using); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26020  __Pyx_GOTREF(__pyx_t_1);
26021 
26022  /* "WaveTools.pyx":761
26023  * """
26024  *
26025  * def __init__(self, # <<<<<<<<<<<<<<
26026  * timeSeriesFile, # e.g.= "Timeseries.txt",
26027  * skiprows,
26028  */
26029  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_1__init__, 0, __pyx_n_s_TimeSeries___init, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__190)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26030  __Pyx_GOTREF(__pyx_t_2);
26031  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__191);
26032  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_init, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 761; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26033  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26034 
26035  /* "WaveTools.pyx":1014
26036  * # self.Noverlap = int(self.Npw *0.25)
26037  *
26038  * def etaDirect(self, x, t): # <<<<<<<<<<<<<<
26039  * """Free surface displacement
26040  * :param x: floating point x coordinate
26041  */
26042  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_3etaDirect, 0, __pyx_n_s_TimeSeries_etaDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__193)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26043  __Pyx_GOTREF(__pyx_t_2);
26044  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_etaDirect, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26045  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26046 
26047  /* "WaveTools.pyx":1024
26048  * return Eta
26049  *
26050  * def uDirect(self, x, t): # <<<<<<<<<<<<<<
26051  * """x-component of velocity
26052  *
26053  */
26054  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_5uDirect, 0, __pyx_n_s_TimeSeries_uDirect, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__195)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26055  __Pyx_GOTREF(__pyx_t_2);
26056  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_uDirect, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26057  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26058 
26059  /* "WaveTools.pyx":1037
26060  * return U
26061  *
26062  * def findWindow(self,t): # <<<<<<<<<<<<<<
26063  * term = 1. - self.handover
26064  * if t-self.time[0] >= term*self.Twindow:
26065  */
26066  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_7findWindow, 0, __pyx_n_s_TimeSeries_findWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__197)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26067  __Pyx_GOTREF(__pyx_t_2);
26068  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_findWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26069  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26070 
26071  /* "WaveTools.pyx":1047
26072  * return Nw
26073  *
26074  * def etaWindow(self, x, t): # <<<<<<<<<<<<<<
26075  * """Free surface displacement
26076  * :param x: floating point x coordinate
26077  */
26078  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_9etaWindow, 0, __pyx_n_s_TimeSeries_etaWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__199)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26079  __Pyx_GOTREF(__pyx_t_2);
26080  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_etaWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1047; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26081  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26082 
26083  /* "WaveTools.pyx":1063
26084  * return Eta
26085  *
26086  * def uWindow(self, x, t): # <<<<<<<<<<<<<<
26087  * """x-component of velocity
26088  *
26089  */
26090  __pyx_t_2 = __Pyx_CyFunction_NewEx(&__pyx_mdef_9WaveTools_10TimeSeries_11uWindow, 0, __pyx_n_s_TimeSeries_uWindow, NULL, __pyx_n_s_WaveTools, __pyx_d, ((PyObject *)__pyx_codeobj__201)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26091  __Pyx_GOTREF(__pyx_t_2);
26092  if (PyObject_SetItem(__pyx_t_1, __pyx_n_s_uWindow, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26093  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26094 
26095  /* "WaveTools.pyx":747
26096  *
26097  *
26098  * class TimeSeries: # <<<<<<<<<<<<<<
26099  * """Generate a time series by using spectral windowing method.
26100  * :param timeSeriesFile: Time series file name
26101  */
26102  __pyx_t_2 = __Pyx_Py3ClassCreate(((PyObject*)&__Pyx_DefaultClassType), __pyx_n_s_TimeSeries, __pyx_empty_tuple, __pyx_t_1, NULL, 0, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26103  __Pyx_GOTREF(__pyx_t_2);
26104  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TimeSeries, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26105  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
26106  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26107 
26108  /* "WaveTools.pyx":1
26109  * # A type of -*- python -*- file # <<<<<<<<<<<<<<
26110  * #cython: embedsignature=True
26111  * """Tools for working with water waves.
26112  */
26113  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26114  __Pyx_GOTREF(__pyx_t_1);
26115  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
26116  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
26117 
26118  /*--- Wrapped vars code ---*/
26119 
26120  goto __pyx_L0;
26121  __pyx_L1_error:;
26122  __Pyx_XDECREF(__pyx_t_1);
26123  __Pyx_XDECREF(__pyx_t_2);
26124  __Pyx_XDECREF(__pyx_t_3);
26125  __Pyx_XDECREF(__pyx_t_4);
26126  __Pyx_XDECREF(__pyx_t_5);
26127  __Pyx_XDECREF(__pyx_t_6);
26128  __Pyx_XDECREF(__pyx_t_7);
26129  if (__pyx_m) {
26130  if (__pyx_d) {
26131  __Pyx_AddTraceback("init WaveTools", __pyx_clineno, __pyx_lineno, __pyx_filename);
26132  }
26133  Py_DECREF(__pyx_m); __pyx_m = 0;
26134  } else if (!PyErr_Occurred()) {
26135  PyErr_SetString(PyExc_ImportError, "init WaveTools");
26136  }
26137  __pyx_L0:;
26138  __Pyx_RefNannyFinishContext();
26139  #if PY_MAJOR_VERSION < 3
26140  return;
26141  #else
26142  return __pyx_m;
26143  #endif
26144 }
26145 
26146 /* --- Runtime support code --- */
26147 #if CYTHON_REFNANNY
26148 static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
26149  PyObject *m = NULL, *p = NULL;
26150  void *r = NULL;
26151  m = PyImport_ImportModule((char *)modname);
26152  if (!m) goto end;
26153  p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
26154  if (!p) goto end;
26155  r = PyLong_AsVoidPtr(p);
26156 end:
26157  Py_XDECREF(p);
26158  Py_XDECREF(m);
26159  return (__Pyx_RefNannyAPIStruct *)r;
26160 }
26161 #endif
26162 
26163 static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
26164  PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
26165  if (unlikely(!result)) {
26166  PyErr_Format(PyExc_NameError,
26167 #if PY_MAJOR_VERSION >= 3
26168  "name '%U' is not defined", name);
26169 #else
26170  "name '%.200s' is not defined", PyString_AS_STRING(name));
26171 #endif
26172  }
26173  return result;
26174 }
26175 
26176 static void __Pyx_RaiseArgtupleInvalid(
26177  const char* func_name,
26178  int exact,
26179  Py_ssize_t num_min,
26180  Py_ssize_t num_max,
26181  Py_ssize_t num_found)
26182 {
26183  Py_ssize_t num_expected;
26184  const char *more_or_less;
26185  if (num_found < num_min) {
26186  num_expected = num_min;
26187  more_or_less = "at least";
26188  } else {
26189  num_expected = num_max;
26190  more_or_less = "at most";
26191  }
26192  if (exact) {
26193  more_or_less = "exactly";
26194  }
26195  PyErr_Format(PyExc_TypeError,
26196  "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
26197  func_name, more_or_less, num_expected,
26198  (num_expected == 1) ? "" : "s", num_found);
26199 }
26200 
26201 static void __Pyx_RaiseDoubleKeywordsError(
26202  const char* func_name,
26203  PyObject* kw_name)
26204 {
26205  PyErr_Format(PyExc_TypeError,
26206  #if PY_MAJOR_VERSION >= 3
26207  "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
26208  #else
26209  "%s() got multiple values for keyword argument '%s'", func_name,
26210  PyString_AsString(kw_name));
26211  #endif
26212 }
26213 
26214 static int __Pyx_ParseOptionalKeywords(
26215  PyObject *kwds,
26216  PyObject **argnames[],
26217  PyObject *kwds2,
26218  PyObject *values[],
26219  Py_ssize_t num_pos_args,
26220  const char* function_name)
26221 {
26222  PyObject *key = 0, *value = 0;
26223  Py_ssize_t pos = 0;
26224  PyObject*** name;
26225  PyObject*** first_kw_arg = argnames + num_pos_args;
26226  while (PyDict_Next(kwds, &pos, &key, &value)) {
26227  name = first_kw_arg;
26228  while (*name && (**name != key)) name++;
26229  if (*name) {
26230  values[name-argnames] = value;
26231  continue;
26232  }
26233  name = first_kw_arg;
26234  #if PY_MAJOR_VERSION < 3
26235  if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
26236  while (*name) {
26237  if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
26238  && _PyString_Eq(**name, key)) {
26239  values[name-argnames] = value;
26240  break;
26241  }
26242  name++;
26243  }
26244  if (*name) continue;
26245  else {
26246  PyObject*** argname = argnames;
26247  while (argname != first_kw_arg) {
26248  if ((**argname == key) || (
26249  (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
26250  && _PyString_Eq(**argname, key))) {
26251  goto arg_passed_twice;
26252  }
26253  argname++;
26254  }
26255  }
26256  } else
26257  #endif
26258  if (likely(PyUnicode_Check(key))) {
26259  while (*name) {
26260  int cmp = (**name == key) ? 0 :
26261  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
26262  (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
26263  #endif
26264  PyUnicode_Compare(**name, key);
26265  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
26266  if (cmp == 0) {
26267  values[name-argnames] = value;
26268  break;
26269  }
26270  name++;
26271  }
26272  if (*name) continue;
26273  else {
26274  PyObject*** argname = argnames;
26275  while (argname != first_kw_arg) {
26276  int cmp = (**argname == key) ? 0 :
26277  #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
26278  (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
26279  #endif
26280  PyUnicode_Compare(**argname, key);
26281  if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
26282  if (cmp == 0) goto arg_passed_twice;
26283  argname++;
26284  }
26285  }
26286  } else
26287  goto invalid_keyword_type;
26288  if (kwds2) {
26289  if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
26290  } else {
26291  goto invalid_keyword;
26292  }
26293  }
26294  return 0;
26295 arg_passed_twice:
26296  __Pyx_RaiseDoubleKeywordsError(function_name, key);
26297  goto bad;
26298 invalid_keyword_type:
26299  PyErr_Format(PyExc_TypeError,
26300  "%.200s() keywords must be strings", function_name);
26301  goto bad;
26302 invalid_keyword:
26303  PyErr_Format(PyExc_TypeError,
26304  #if PY_MAJOR_VERSION < 3
26305  "%.200s() got an unexpected keyword argument '%.200s'",
26306  function_name, PyString_AsString(key));
26307  #else
26308  "%s() got an unexpected keyword argument '%U'",
26309  function_name, key);
26310  #endif
26311 bad:
26312  return -1;
26313 }
26314 
26315 static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
26316  PyObject *result;
26317 #if CYTHON_COMPILING_IN_CPYTHON
26318  result = PyDict_GetItem(__pyx_d, name);
26319  if (likely(result)) {
26320  Py_INCREF(result);
26321  } else {
26322 #else
26323  result = PyObject_GetItem(__pyx_d, name);
26324  if (!result) {
26325  PyErr_Clear();
26326 #endif
26327  result = __Pyx_GetBuiltinName(name);
26328  }
26329  return result;
26330 }
26331 
26332 #if CYTHON_COMPILING_IN_CPYTHON
26333 static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
26334  PyObject *result;
26335  ternaryfunc call = func->ob_type->tp_call;
26336  if (unlikely(!call))
26337  return PyObject_Call(func, arg, kw);
26338  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
26339  return NULL;
26340  result = (*call)(func, arg, kw);
26341  Py_LeaveRecursiveCall();
26342  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
26343  PyErr_SetString(
26344  PyExc_SystemError,
26345  "NULL result without error in PyObject_Call");
26346  }
26347  return result;
26348 }
26349 #endif
26350 
26351 static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname) {
26352  PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
26353 }
26354 
26355 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
26356  PyObject *r;
26357  if (!j) return NULL;
26358  r = PyObject_GetItem(o, j);
26359  Py_DECREF(j);
26360  return r;
26361 }
26362 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
26363  CYTHON_NCP_UNUSED int wraparound,
26364  CYTHON_NCP_UNUSED int boundscheck) {
26365 #if CYTHON_COMPILING_IN_CPYTHON
26366  if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
26367  if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
26368  PyObject *r = PyList_GET_ITEM(o, i);
26369  Py_INCREF(r);
26370  return r;
26371  }
26372  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26373 #else
26374  return PySequence_GetItem(o, i);
26375 #endif
26376 }
26377 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
26378  CYTHON_NCP_UNUSED int wraparound,
26379  CYTHON_NCP_UNUSED int boundscheck) {
26380 #if CYTHON_COMPILING_IN_CPYTHON
26381  if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
26382  if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
26383  PyObject *r = PyTuple_GET_ITEM(o, i);
26384  Py_INCREF(r);
26385  return r;
26386  }
26387  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26388 #else
26389  return PySequence_GetItem(o, i);
26390 #endif
26391 }
26392 static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
26393  CYTHON_NCP_UNUSED int wraparound,
26394  CYTHON_NCP_UNUSED int boundscheck) {
26395 #if CYTHON_COMPILING_IN_CPYTHON
26396  if (is_list || PyList_CheckExact(o)) {
26397  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
26398  if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
26399  PyObject *r = PyList_GET_ITEM(o, n);
26400  Py_INCREF(r);
26401  return r;
26402  }
26403  }
26404  else if (PyTuple_CheckExact(o)) {
26405  Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
26406  if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
26407  PyObject *r = PyTuple_GET_ITEM(o, n);
26408  Py_INCREF(r);
26409  return r;
26410  }
26411  } else {
26412  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
26413  if (likely(m && m->sq_item)) {
26414  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
26415  Py_ssize_t l = m->sq_length(o);
26416  if (likely(l >= 0)) {
26417  i += l;
26418  } else {
26419  if (PyErr_ExceptionMatches(PyExc_OverflowError))
26420  PyErr_Clear();
26421  else
26422  return NULL;
26423  }
26424  }
26425  return m->sq_item(o, i);
26426  }
26427  }
26428 #else
26429  if (is_list || PySequence_Check(o)) {
26430  return PySequence_GetItem(o, i);
26431  }
26432 #endif
26433  return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
26434 }
26435 
26436 #if CYTHON_COMPILING_IN_CPYTHON
26437 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
26438  PyObject *self, *result;
26439  PyCFunction cfunc;
26440  cfunc = PyCFunction_GET_FUNCTION(func);
26441  self = PyCFunction_GET_SELF(func);
26442  if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
26443  return NULL;
26444  result = cfunc(self, arg);
26445  Py_LeaveRecursiveCall();
26446  if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
26447  PyErr_SetString(
26448  PyExc_SystemError,
26449  "NULL result without error in PyObject_Call");
26450  }
26451  return result;
26452 }
26453 #endif
26454 
26455 #if CYTHON_COMPILING_IN_CPYTHON
26456 static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26457  PyObject *result;
26458  PyObject *args = PyTuple_New(1);
26459  if (unlikely(!args)) return NULL;
26460  Py_INCREF(arg);
26461  PyTuple_SET_ITEM(args, 0, arg);
26462  result = __Pyx_PyObject_Call(func, args, NULL);
26463  Py_DECREF(args);
26464  return result;
26465 }
26466 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26467 #ifdef __Pyx_CyFunction_USED
26468  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
26469 #else
26470  if (likely(PyCFunction_Check(func))) {
26471 #endif
26472  if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
26473  return __Pyx_PyObject_CallMethO(func, arg);
26474  }
26475  }
26476  return __Pyx__PyObject_CallOneArg(func, arg);
26477 }
26478 #else
26479 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
26480  PyObject *result;
26481  PyObject *args = PyTuple_Pack(1, arg);
26482  if (unlikely(!args)) return NULL;
26483  result = __Pyx_PyObject_Call(func, args, NULL);
26484  Py_DECREF(args);
26485  return result;
26486 }
26487 #endif
26488 
26489 static CYTHON_INLINE PyObject* __Pyx_PyObject_GetSlice(PyObject* obj,
26490  Py_ssize_t cstart, Py_ssize_t cstop,
26491  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
26492  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
26493 #if CYTHON_COMPILING_IN_CPYTHON
26494  PyMappingMethods* mp;
26495 #if PY_MAJOR_VERSION < 3
26496  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
26497  if (likely(ms && ms->sq_slice)) {
26498  if (!has_cstart) {
26499  if (_py_start && (*_py_start != Py_None)) {
26500  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
26501  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26502  } else
26503  cstart = 0;
26504  }
26505  if (!has_cstop) {
26506  if (_py_stop && (*_py_stop != Py_None)) {
26507  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
26508  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26509  } else
26510  cstop = PY_SSIZE_T_MAX;
26511  }
26512  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
26513  Py_ssize_t l = ms->sq_length(obj);
26514  if (likely(l >= 0)) {
26515  if (cstop < 0) {
26516  cstop += l;
26517  if (cstop < 0) cstop = 0;
26518  }
26519  if (cstart < 0) {
26520  cstart += l;
26521  if (cstart < 0) cstart = 0;
26522  }
26523  } else {
26524  if (PyErr_ExceptionMatches(PyExc_OverflowError))
26525  PyErr_Clear();
26526  else
26527  goto bad;
26528  }
26529  }
26530  return ms->sq_slice(obj, cstart, cstop);
26531  }
26532 #endif
26533  mp = Py_TYPE(obj)->tp_as_mapping;
26534  if (likely(mp && mp->mp_subscript))
26535 #endif
26536  {
26537  PyObject* result;
26538  PyObject *py_slice, *py_start, *py_stop;
26539  if (_py_slice) {
26540  py_slice = *_py_slice;
26541  } else {
26542  PyObject* owned_start = NULL;
26543  PyObject* owned_stop = NULL;
26544  if (_py_start) {
26545  py_start = *_py_start;
26546  } else {
26547  if (has_cstart) {
26548  owned_start = py_start = PyInt_FromSsize_t(cstart);
26549  if (unlikely(!py_start)) goto bad;
26550  } else
26551  py_start = Py_None;
26552  }
26553  if (_py_stop) {
26554  py_stop = *_py_stop;
26555  } else {
26556  if (has_cstop) {
26557  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
26558  if (unlikely(!py_stop)) {
26559  Py_XDECREF(owned_start);
26560  goto bad;
26561  }
26562  } else
26563  py_stop = Py_None;
26564  }
26565  py_slice = PySlice_New(py_start, py_stop, Py_None);
26566  Py_XDECREF(owned_start);
26567  Py_XDECREF(owned_stop);
26568  if (unlikely(!py_slice)) goto bad;
26569  }
26570 #if CYTHON_COMPILING_IN_CPYTHON
26571  result = mp->mp_subscript(obj, py_slice);
26572 #else
26573  result = PyObject_GetItem(obj, py_slice);
26574 #endif
26575  if (!_py_slice) {
26576  Py_DECREF(py_slice);
26577  }
26578  return result;
26579  }
26580  PyErr_Format(PyExc_TypeError,
26581  "'%.200s' object is unsliceable", Py_TYPE(obj)->tp_name);
26582 bad:
26583  return NULL;
26584 }
26585 
26586 #if CYTHON_COMPILING_IN_CPYTHON
26587 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
26588 #ifdef __Pyx_CyFunction_USED
26589  if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
26590 #else
26591  if (likely(PyCFunction_Check(func))) {
26592 #endif
26593  if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) {
26594  return __Pyx_PyObject_CallMethO(func, NULL);
26595  }
26596  }
26597  return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL);
26598 }
26599 #endif
26600 
26601 #if CYTHON_USE_PYLONG_INTERNALS
26602  #include "longintrepr.h"
26603 #endif
26604 
26605 #if CYTHON_COMPILING_IN_CPYTHON
26606 static PyObject* __Pyx_PyFloat_DivideCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26607  const double a = floatval;
26608  double b, result;
26609  if (likely(PyFloat_CheckExact(op2))) {
26610  b = PyFloat_AS_DOUBLE(op2);
26611  } else
26612  #if PY_MAJOR_VERSION < 3
26613  if (likely(PyInt_CheckExact(op2))) {
26614  b = (double) PyInt_AS_LONG(op2);
26615  } else
26616  #endif
26617  if (likely(PyLong_CheckExact(op2))) {
26618  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26619  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26620  const Py_ssize_t size = Py_SIZE(op2);
26621  switch (size) {
26622  case 0: b = 0.0; break;
26623  case -1: b = -(double) digits[0]; break;
26624  case 1: b = (double) digits[0]; break;
26625  case -2:
26626  case 2:
26627  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26628  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26629  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26630  if (size == -2)
26631  b = -b;
26632  break;
26633  }
26634  }
26635  case -3:
26636  case 3:
26637  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26638  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26639  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26640  if (size == -3)
26641  b = -b;
26642  break;
26643  }
26644  }
26645  case -4:
26646  case 4:
26647  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26648  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26649  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26650  if (size == -4)
26651  b = -b;
26652  break;
26653  }
26654  }
26655  default:
26656  #else
26657  {
26658  #endif
26659  b = PyLong_AsDouble(op2);
26660  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26661  }
26662  } else {
26663  return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
26664  }
26665  PyFPE_START_PROTECT("divide", return NULL)
26666  result = a / b;
26667  PyFPE_END_PROTECT(result)
26668  return PyFloat_FromDouble(result);
26669 }
26670 #endif
26671 
26672 #if CYTHON_COMPILING_IN_CPYTHON
26673 static PyObject* __Pyx_PyFloat_SubtractCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26674  const double a = floatval;
26675  double b, result;
26676  if (likely(PyFloat_CheckExact(op2))) {
26677  b = PyFloat_AS_DOUBLE(op2);
26678  } else
26679  #if PY_MAJOR_VERSION < 3
26680  if (likely(PyInt_CheckExact(op2))) {
26681  b = (double) PyInt_AS_LONG(op2);
26682  } else
26683  #endif
26684  if (likely(PyLong_CheckExact(op2))) {
26685  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26686  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26687  const Py_ssize_t size = Py_SIZE(op2);
26688  switch (size) {
26689  case 0: b = 0.0; break;
26690  case -1: b = -(double) digits[0]; break;
26691  case 1: b = (double) digits[0]; break;
26692  case -2:
26693  case 2:
26694  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26695  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26696  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26697  if (size == -2)
26698  b = -b;
26699  break;
26700  }
26701  }
26702  case -3:
26703  case 3:
26704  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26705  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26706  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26707  if (size == -3)
26708  b = -b;
26709  break;
26710  }
26711  }
26712  case -4:
26713  case 4:
26714  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26715  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26716  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26717  if (size == -4)
26718  b = -b;
26719  break;
26720  }
26721  }
26722  default:
26723  #else
26724  {
26725  #endif
26726  b = PyLong_AsDouble(op2);
26727  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26728  }
26729  } else {
26730  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
26731  }
26732  PyFPE_START_PROTECT("subtract", return NULL)
26733  result = a - b;
26734  PyFPE_END_PROTECT(result)
26735  return PyFloat_FromDouble(result);
26736 }
26737 #endif
26738 
26739 #if CYTHON_COMPILING_IN_CPYTHON
26740 static PyObject* __Pyx_PyFloat_AddCObj(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26741  const double a = floatval;
26742  double b, result;
26743  if (likely(PyFloat_CheckExact(op2))) {
26744  b = PyFloat_AS_DOUBLE(op2);
26745  } else
26746  #if PY_MAJOR_VERSION < 3
26747  if (likely(PyInt_CheckExact(op2))) {
26748  b = (double) PyInt_AS_LONG(op2);
26749  } else
26750  #endif
26751  if (likely(PyLong_CheckExact(op2))) {
26752  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26753  const digit* digits = ((PyLongObject*)op2)->ob_digit;
26754  const Py_ssize_t size = Py_SIZE(op2);
26755  switch (size) {
26756  case 0: b = 0.0; break;
26757  case -1: b = -(double) digits[0]; break;
26758  case 1: b = (double) digits[0]; break;
26759  case -2:
26760  case 2:
26761  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26762  b = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26763  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26764  if (size == -2)
26765  b = -b;
26766  break;
26767  }
26768  }
26769  case -3:
26770  case 3:
26771  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26772  b = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26773  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26774  if (size == -3)
26775  b = -b;
26776  break;
26777  }
26778  }
26779  case -4:
26780  case 4:
26781  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26782  b = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26783  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (b < (double) (1L<<53))) {
26784  if (size == -4)
26785  b = -b;
26786  break;
26787  }
26788  }
26789  default:
26790  #else
26791  {
26792  #endif
26793  b = PyLong_AsDouble(op2);
26794  if (unlikely(b == -1.0 && PyErr_Occurred())) return NULL;
26795  }
26796  } else {
26797  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
26798  }
26799  PyFPE_START_PROTECT("add", return NULL)
26800  result = a + b;
26801  PyFPE_END_PROTECT(result)
26802  return PyFloat_FromDouble(result);
26803 }
26804 #endif
26805 
26806 #if CYTHON_COMPILING_IN_CPYTHON
26807 static PyObject* __Pyx_PyFloat_SubtractObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
26808  const double b = floatval;
26809  double a, result;
26810  if (likely(PyFloat_CheckExact(op1))) {
26811  a = PyFloat_AS_DOUBLE(op1);
26812  } else
26813  #if PY_MAJOR_VERSION < 3
26814  if (likely(PyInt_CheckExact(op1))) {
26815  a = (double) PyInt_AS_LONG(op1);
26816  } else
26817  #endif
26818  if (likely(PyLong_CheckExact(op1))) {
26819  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
26820  const digit* digits = ((PyLongObject*)op1)->ob_digit;
26821  const Py_ssize_t size = Py_SIZE(op1);
26822  switch (size) {
26823  case 0: a = 0.0; break;
26824  case -1: a = -(double) digits[0]; break;
26825  case 1: a = (double) digits[0]; break;
26826  case -2:
26827  case 2:
26828  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
26829  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26830  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26831  if (size == -2)
26832  a = -a;
26833  break;
26834  }
26835  }
26836  case -3:
26837  case 3:
26838  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
26839  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26840  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26841  if (size == -3)
26842  a = -a;
26843  break;
26844  }
26845  }
26846  case -4:
26847  case 4:
26848  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
26849  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
26850  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
26851  if (size == -4)
26852  a = -a;
26853  break;
26854  }
26855  }
26856  default:
26857  #else
26858  {
26859  #endif
26860  a = PyLong_AsDouble(op1);
26861  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
26862  }
26863  } else {
26864  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
26865  }
26866  PyFPE_START_PROTECT("subtract", return NULL)
26867  result = a - b;
26868  PyFPE_END_PROTECT(result)
26869  return PyFloat_FromDouble(result);
26870 }
26871 #endif
26872 
26873 static CYTHON_INLINE int __Pyx_PyObject_SetSlice(PyObject* obj, PyObject* value,
26874  Py_ssize_t cstart, Py_ssize_t cstop,
26875  PyObject** _py_start, PyObject** _py_stop, PyObject** _py_slice,
26876  int has_cstart, int has_cstop, CYTHON_UNUSED int wraparound) {
26877 #if CYTHON_COMPILING_IN_CPYTHON
26878  PyMappingMethods* mp;
26879 #if PY_MAJOR_VERSION < 3
26880  PySequenceMethods* ms = Py_TYPE(obj)->tp_as_sequence;
26881  if (likely(ms && ms->sq_ass_slice)) {
26882  if (!has_cstart) {
26883  if (_py_start && (*_py_start != Py_None)) {
26884  cstart = __Pyx_PyIndex_AsSsize_t(*_py_start);
26885  if ((cstart == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26886  } else
26887  cstart = 0;
26888  }
26889  if (!has_cstop) {
26890  if (_py_stop && (*_py_stop != Py_None)) {
26891  cstop = __Pyx_PyIndex_AsSsize_t(*_py_stop);
26892  if ((cstop == (Py_ssize_t)-1) && PyErr_Occurred()) goto bad;
26893  } else
26894  cstop = PY_SSIZE_T_MAX;
26895  }
26896  if (wraparound && unlikely((cstart < 0) | (cstop < 0)) && likely(ms->sq_length)) {
26897  Py_ssize_t l = ms->sq_length(obj);
26898  if (likely(l >= 0)) {
26899  if (cstop < 0) {
26900  cstop += l;
26901  if (cstop < 0) cstop = 0;
26902  }
26903  if (cstart < 0) {
26904  cstart += l;
26905  if (cstart < 0) cstart = 0;
26906  }
26907  } else {
26908  if (PyErr_ExceptionMatches(PyExc_OverflowError))
26909  PyErr_Clear();
26910  else
26911  goto bad;
26912  }
26913  }
26914  return ms->sq_ass_slice(obj, cstart, cstop, value);
26915  }
26916 #endif
26917  mp = Py_TYPE(obj)->tp_as_mapping;
26918  if (likely(mp && mp->mp_ass_subscript))
26919 #endif
26920  {
26921  int result;
26922  PyObject *py_slice, *py_start, *py_stop;
26923  if (_py_slice) {
26924  py_slice = *_py_slice;
26925  } else {
26926  PyObject* owned_start = NULL;
26927  PyObject* owned_stop = NULL;
26928  if (_py_start) {
26929  py_start = *_py_start;
26930  } else {
26931  if (has_cstart) {
26932  owned_start = py_start = PyInt_FromSsize_t(cstart);
26933  if (unlikely(!py_start)) goto bad;
26934  } else
26935  py_start = Py_None;
26936  }
26937  if (_py_stop) {
26938  py_stop = *_py_stop;
26939  } else {
26940  if (has_cstop) {
26941  owned_stop = py_stop = PyInt_FromSsize_t(cstop);
26942  if (unlikely(!py_stop)) {
26943  Py_XDECREF(owned_start);
26944  goto bad;
26945  }
26946  } else
26947  py_stop = Py_None;
26948  }
26949  py_slice = PySlice_New(py_start, py_stop, Py_None);
26950  Py_XDECREF(owned_start);
26951  Py_XDECREF(owned_stop);
26952  if (unlikely(!py_slice)) goto bad;
26953  }
26954 #if CYTHON_COMPILING_IN_CPYTHON
26955  result = mp->mp_ass_subscript(obj, py_slice, value);
26956 #else
26957  result = value ? PyObject_SetItem(obj, py_slice, value) : PyObject_DelItem(obj, py_slice);
26958 #endif
26959  if (!_py_slice) {
26960  Py_DECREF(py_slice);
26961  }
26962  return result;
26963  }
26964  PyErr_Format(PyExc_TypeError,
26965  "'%.200s' object does not support slice %.10s",
26966  Py_TYPE(obj)->tp_name, value ? "assignment" : "deletion");
26967 bad:
26968  return -1;
26969 }
26970 
26971 static double __Pyx__PyObject_AsDouble(PyObject* obj) {
26972  PyObject* float_value;
26973 #if CYTHON_COMPILING_IN_PYPY
26974  float_value = PyNumber_Float(obj); if (0) goto bad;
26975 #else
26976  PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
26977  if (likely(nb) && likely(nb->nb_float)) {
26978  float_value = nb->nb_float(obj);
26979  if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
26980  PyErr_Format(PyExc_TypeError,
26981  "__float__ returned non-float (type %.200s)",
26982  Py_TYPE(float_value)->tp_name);
26983  Py_DECREF(float_value);
26984  goto bad;
26985  }
26986  } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
26987 #if PY_MAJOR_VERSION >= 3
26988  float_value = PyFloat_FromString(obj);
26989 #else
26990  float_value = PyFloat_FromString(obj, 0);
26991 #endif
26992  } else {
26993  PyObject* args = PyTuple_New(1);
26994  if (unlikely(!args)) goto bad;
26995  PyTuple_SET_ITEM(args, 0, obj);
26996  float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
26997  PyTuple_SET_ITEM(args, 0, 0);
26998  Py_DECREF(args);
26999  }
27000 #endif
27001  if (likely(float_value)) {
27002  double value = PyFloat_AS_DOUBLE(float_value);
27003  Py_DECREF(float_value);
27004  return value;
27005  }
27006 bad:
27007  return (double)-1;
27008 }
27009 
27010 #if CYTHON_COMPILING_IN_CPYTHON
27011 static PyObject* __Pyx_PyInt_SubtractObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27012  #if PY_MAJOR_VERSION < 3
27013  if (likely(PyInt_CheckExact(op1))) {
27014  const long b = intval;
27015  long x;
27016  long a = PyInt_AS_LONG(op1);
27017  x = (long)((unsigned long)a - b);
27018  if (likely((x^a) >= 0 || (x^~b) >= 0))
27019  return PyInt_FromLong(x);
27020  return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
27021  }
27022  #endif
27023  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27024  if (likely(PyLong_CheckExact(op1))) {
27025  const long b = intval;
27026  long a, x;
27027  const PY_LONG_LONG llb = intval;
27028  PY_LONG_LONG lla, llx;
27029  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27030  const Py_ssize_t size = Py_SIZE(op1);
27031  if (likely(__Pyx_sst_abs(size) <= 1)) {
27032  a = likely(size) ? digits[0] : 0;
27033  if (size == -1) a = -a;
27034  } else {
27035  switch (size) {
27036  case -2:
27037  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27038  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27039  break;
27040  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27041  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27042  goto long_long;
27043  }
27044  case 2:
27045  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27046  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27047  break;
27048  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27049  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27050  goto long_long;
27051  }
27052  case -3:
27053  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27054  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27055  break;
27056  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27057  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27058  goto long_long;
27059  }
27060  case 3:
27061  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27062  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27063  break;
27064  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27065  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27066  goto long_long;
27067  }
27068  case -4:
27069  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27070  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27071  break;
27072  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27073  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27074  goto long_long;
27075  }
27076  case 4:
27077  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27078  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27079  break;
27080  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27081  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27082  goto long_long;
27083  }
27084  default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
27085  }
27086  }
27087  x = a - b;
27088  return PyLong_FromLong(x);
27089  long_long:
27090  llx = lla - llb;
27091  return PyLong_FromLongLong(llx);
27092  }
27093  #endif
27094  if (PyFloat_CheckExact(op1)) {
27095  const long b = intval;
27096  double a = PyFloat_AS_DOUBLE(op1);
27097  double result;
27098  PyFPE_START_PROTECT("subtract", return NULL)
27099  result = ((double)a) - (double)b;
27100  PyFPE_END_PROTECT(result)
27101  return PyFloat_FromDouble(result);
27102  }
27103  return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
27104 }
27105 #endif
27106 
27107 static CYTHON_INLINE int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
27108  int r;
27109  if (!j) return -1;
27110  r = PyObject_SetItem(o, j, v);
27111  Py_DECREF(j);
27112  return r;
27113 }
27114 static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
27115  CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
27116 #if CYTHON_COMPILING_IN_CPYTHON
27117  if (is_list || PyList_CheckExact(o)) {
27118  Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
27119  if ((!boundscheck) || likely((n >= 0) & (n < PyList_GET_SIZE(o)))) {
27120  PyObject* old = PyList_GET_ITEM(o, n);
27121  Py_INCREF(v);
27122  PyList_SET_ITEM(o, n, v);
27123  Py_DECREF(old);
27124  return 1;
27125  }
27126  } else {
27127  PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
27128  if (likely(m && m->sq_ass_item)) {
27129  if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
27130  Py_ssize_t l = m->sq_length(o);
27131  if (likely(l >= 0)) {
27132  i += l;
27133  } else {
27134  if (PyErr_ExceptionMatches(PyExc_OverflowError))
27135  PyErr_Clear();
27136  else
27137  return -1;
27138  }
27139  }
27140  return m->sq_ass_item(o, i, v);
27141  }
27142  }
27143 #else
27144 #if CYTHON_COMPILING_IN_PYPY
27145  if (is_list || (PySequence_Check(o) && !PyDict_Check(o))) {
27146 #else
27147  if (is_list || PySequence_Check(o)) {
27148 #endif
27149  return PySequence_SetItem(o, i, v);
27150  }
27151 #endif
27152  return __Pyx_SetItemInt_Generic(o, PyInt_FromSsize_t(i), v);
27153 }
27154 
27155 static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
27156 #if CYTHON_COMPILING_IN_CPYTHON
27157  PyThreadState *tstate = PyThreadState_GET();
27158  *type = tstate->exc_type;
27159  *value = tstate->exc_value;
27160  *tb = tstate->exc_traceback;
27161  Py_XINCREF(*type);
27162  Py_XINCREF(*value);
27163  Py_XINCREF(*tb);
27164 #else
27165  PyErr_GetExcInfo(type, value, tb);
27166 #endif
27167 }
27168 static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
27169 #if CYTHON_COMPILING_IN_CPYTHON
27170  PyObject *tmp_type, *tmp_value, *tmp_tb;
27171  PyThreadState *tstate = PyThreadState_GET();
27172  tmp_type = tstate->exc_type;
27173  tmp_value = tstate->exc_value;
27174  tmp_tb = tstate->exc_traceback;
27175  tstate->exc_type = type;
27176  tstate->exc_value = value;
27177  tstate->exc_traceback = tb;
27178  Py_XDECREF(tmp_type);
27179  Py_XDECREF(tmp_value);
27180  Py_XDECREF(tmp_tb);
27181 #else
27182  PyErr_SetExcInfo(type, value, tb);
27183 #endif
27184 }
27185 
27186 static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
27187  PyObject *local_type, *local_value, *local_tb;
27188 #if CYTHON_COMPILING_IN_CPYTHON
27189  PyObject *tmp_type, *tmp_value, *tmp_tb;
27190  PyThreadState *tstate = PyThreadState_GET();
27191  local_type = tstate->curexc_type;
27192  local_value = tstate->curexc_value;
27193  local_tb = tstate->curexc_traceback;
27194  tstate->curexc_type = 0;
27195  tstate->curexc_value = 0;
27196  tstate->curexc_traceback = 0;
27197 #else
27198  PyErr_Fetch(&local_type, &local_value, &local_tb);
27199 #endif
27200  PyErr_NormalizeException(&local_type, &local_value, &local_tb);
27201 #if CYTHON_COMPILING_IN_CPYTHON
27202  if (unlikely(tstate->curexc_type))
27203 #else
27204  if (unlikely(PyErr_Occurred()))
27205 #endif
27206  goto bad;
27207  #if PY_MAJOR_VERSION >= 3
27208  if (local_tb) {
27209  if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
27210  goto bad;
27211  }
27212  #endif
27213  Py_XINCREF(local_tb);
27214  Py_XINCREF(local_type);
27215  Py_XINCREF(local_value);
27216  *type = local_type;
27217  *value = local_value;
27218  *tb = local_tb;
27219 #if CYTHON_COMPILING_IN_CPYTHON
27220  tmp_type = tstate->exc_type;
27221  tmp_value = tstate->exc_value;
27222  tmp_tb = tstate->exc_traceback;
27223  tstate->exc_type = local_type;
27224  tstate->exc_value = local_value;
27225  tstate->exc_traceback = local_tb;
27226  Py_XDECREF(tmp_type);
27227  Py_XDECREF(tmp_value);
27228  Py_XDECREF(tmp_tb);
27229 #else
27230  PyErr_SetExcInfo(local_type, local_value, local_tb);
27231 #endif
27232  return 0;
27233 bad:
27234  *type = 0;
27235  *value = 0;
27236  *tb = 0;
27237  Py_XDECREF(local_type);
27238  Py_XDECREF(local_value);
27239  Py_XDECREF(local_tb);
27240  return -1;
27241 }
27242 
27243 #if CYTHON_COMPILING_IN_CPYTHON
27244 static PyObject* __Pyx_PyInt_AddObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27245  #if PY_MAJOR_VERSION < 3
27246  if (likely(PyInt_CheckExact(op1))) {
27247  const long b = intval;
27248  long x;
27249  long a = PyInt_AS_LONG(op1);
27250  x = (long)((unsigned long)a + b);
27251  if (likely((x^a) >= 0 || (x^b) >= 0))
27252  return PyInt_FromLong(x);
27253  return PyLong_Type.tp_as_number->nb_add(op1, op2);
27254  }
27255  #endif
27256  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27257  if (likely(PyLong_CheckExact(op1))) {
27258  const long b = intval;
27259  long a, x;
27260  const PY_LONG_LONG llb = intval;
27261  PY_LONG_LONG lla, llx;
27262  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27263  const Py_ssize_t size = Py_SIZE(op1);
27264  if (likely(__Pyx_sst_abs(size) <= 1)) {
27265  a = likely(size) ? digits[0] : 0;
27266  if (size == -1) a = -a;
27267  } else {
27268  switch (size) {
27269  case -2:
27270  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27271  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27272  break;
27273  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27274  lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27275  goto long_long;
27276  }
27277  case 2:
27278  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27279  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27280  break;
27281  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
27282  lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27283  goto long_long;
27284  }
27285  case -3:
27286  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27287  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27288  break;
27289  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27290  lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27291  goto long_long;
27292  }
27293  case 3:
27294  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27295  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27296  break;
27297  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
27298  lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27299  goto long_long;
27300  }
27301  case -4:
27302  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27303  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27304  break;
27305  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27306  lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27307  goto long_long;
27308  }
27309  case 4:
27310  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27311  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27312  break;
27313  } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
27314  lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
27315  goto long_long;
27316  }
27317  default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
27318  }
27319  }
27320  x = a + b;
27321  return PyLong_FromLong(x);
27322  long_long:
27323  llx = lla + llb;
27324  return PyLong_FromLongLong(llx);
27325  }
27326  #endif
27327  if (PyFloat_CheckExact(op1)) {
27328  const long b = intval;
27329  double a = PyFloat_AS_DOUBLE(op1);
27330  double result;
27331  PyFPE_START_PROTECT("add", return NULL)
27332  result = ((double)a) + (double)b;
27333  PyFPE_END_PROTECT(result)
27334  return PyFloat_FromDouble(result);
27335  }
27336  return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
27337 }
27338 #endif
27339 
27340 static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
27341  PyObject *empty_list = 0;
27342  PyObject *module = 0;
27343  PyObject *global_dict = 0;
27344  PyObject *empty_dict = 0;
27345  PyObject *list;
27346  #if PY_VERSION_HEX < 0x03030000
27347  PyObject *py_import;
27348  py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
27349  if (!py_import)
27350  goto bad;
27351  #endif
27352  if (from_list)
27353  list = from_list;
27354  else {
27355  empty_list = PyList_New(0);
27356  if (!empty_list)
27357  goto bad;
27358  list = empty_list;
27359  }
27360  global_dict = PyModule_GetDict(__pyx_m);
27361  if (!global_dict)
27362  goto bad;
27363  empty_dict = PyDict_New();
27364  if (!empty_dict)
27365  goto bad;
27366  {
27367  #if PY_MAJOR_VERSION >= 3
27368  if (level == -1) {
27369  if (strchr(__Pyx_MODULE_NAME, '.')) {
27370  #if PY_VERSION_HEX < 0x03030000
27371  PyObject *py_level = PyInt_FromLong(1);
27372  if (!py_level)
27373  goto bad;
27374  module = PyObject_CallFunctionObjArgs(py_import,
27375  name, global_dict, empty_dict, list, py_level, NULL);
27376  Py_DECREF(py_level);
27377  #else
27378  module = PyImport_ImportModuleLevelObject(
27379  name, global_dict, empty_dict, list, 1);
27380  #endif
27381  if (!module) {
27382  if (!PyErr_ExceptionMatches(PyExc_ImportError))
27383  goto bad;
27384  PyErr_Clear();
27385  }
27386  }
27387  level = 0;
27388  }
27389  #endif
27390  if (!module) {
27391  #if PY_VERSION_HEX < 0x03030000
27392  PyObject *py_level = PyInt_FromLong(level);
27393  if (!py_level)
27394  goto bad;
27395  module = PyObject_CallFunctionObjArgs(py_import,
27396  name, global_dict, empty_dict, list, py_level, NULL);
27397  Py_DECREF(py_level);
27398  #else
27399  module = PyImport_ImportModuleLevelObject(
27400  name, global_dict, empty_dict, list, level);
27401  #endif
27402  }
27403  }
27404 bad:
27405  #if PY_VERSION_HEX < 0x03030000
27406  Py_XDECREF(py_import);
27407  #endif
27408  Py_XDECREF(empty_list);
27409  Py_XDECREF(empty_dict);
27410  return module;
27411 }
27412 
27413 static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name) {
27414  PyObject* value = __Pyx_PyObject_GetAttrStr(module, name);
27415  if (unlikely(!value) && PyErr_ExceptionMatches(PyExc_AttributeError)) {
27416  PyErr_Format(PyExc_ImportError,
27417  #if PY_MAJOR_VERSION < 3
27418  "cannot import name %.230s", PyString_AS_STRING(name));
27419  #else
27420  "cannot import name %S", name);
27421  #endif
27422  }
27423  return value;
27424 }
27425 
27426 static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
27427 #if CYTHON_COMPILING_IN_PYPY
27428  return PyObject_RichCompareBool(s1, s2, equals);
27429 #else
27430  if (s1 == s2) {
27431  return (equals == Py_EQ);
27432  } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
27433  const char *ps1, *ps2;
27434  Py_ssize_t length = PyBytes_GET_SIZE(s1);
27435  if (length != PyBytes_GET_SIZE(s2))
27436  return (equals == Py_NE);
27437  ps1 = PyBytes_AS_STRING(s1);
27438  ps2 = PyBytes_AS_STRING(s2);
27439  if (ps1[0] != ps2[0]) {
27440  return (equals == Py_NE);
27441  } else if (length == 1) {
27442  return (equals == Py_EQ);
27443  } else {
27444  int result = memcmp(ps1, ps2, (size_t)length);
27445  return (equals == Py_EQ) ? (result == 0) : (result != 0);
27446  }
27447  } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
27448  return (equals == Py_NE);
27449  } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
27450  return (equals == Py_NE);
27451  } else {
27452  int result;
27453  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
27454  if (!py_result)
27455  return -1;
27456  result = __Pyx_PyObject_IsTrue(py_result);
27457  Py_DECREF(py_result);
27458  return result;
27459  }
27460 #endif
27461 }
27462 
27463 static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
27464 #if CYTHON_COMPILING_IN_PYPY
27465  return PyObject_RichCompareBool(s1, s2, equals);
27466 #else
27467 #if PY_MAJOR_VERSION < 3
27468  PyObject* owned_ref = NULL;
27469 #endif
27470  int s1_is_unicode, s2_is_unicode;
27471  if (s1 == s2) {
27472  goto return_eq;
27473  }
27474  s1_is_unicode = PyUnicode_CheckExact(s1);
27475  s2_is_unicode = PyUnicode_CheckExact(s2);
27476 #if PY_MAJOR_VERSION < 3
27477  if ((s1_is_unicode & (!s2_is_unicode)) && PyString_CheckExact(s2)) {
27478  owned_ref = PyUnicode_FromObject(s2);
27479  if (unlikely(!owned_ref))
27480  return -1;
27481  s2 = owned_ref;
27482  s2_is_unicode = 1;
27483  } else if ((s2_is_unicode & (!s1_is_unicode)) && PyString_CheckExact(s1)) {
27484  owned_ref = PyUnicode_FromObject(s1);
27485  if (unlikely(!owned_ref))
27486  return -1;
27487  s1 = owned_ref;
27488  s1_is_unicode = 1;
27489  } else if (((!s2_is_unicode) & (!s1_is_unicode))) {
27490  return __Pyx_PyBytes_Equals(s1, s2, equals);
27491  }
27492 #endif
27493  if (s1_is_unicode & s2_is_unicode) {
27494  Py_ssize_t length;
27495  int kind;
27496  void *data1, *data2;
27497  if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
27498  return -1;
27499  length = __Pyx_PyUnicode_GET_LENGTH(s1);
27500  if (length != __Pyx_PyUnicode_GET_LENGTH(s2)) {
27501  goto return_ne;
27502  }
27503  kind = __Pyx_PyUnicode_KIND(s1);
27504  if (kind != __Pyx_PyUnicode_KIND(s2)) {
27505  goto return_ne;
27506  }
27507  data1 = __Pyx_PyUnicode_DATA(s1);
27508  data2 = __Pyx_PyUnicode_DATA(s2);
27509  if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
27510  goto return_ne;
27511  } else if (length == 1) {
27512  goto return_eq;
27513  } else {
27514  int result = memcmp(data1, data2, (size_t)(length * kind));
27515  #if PY_MAJOR_VERSION < 3
27516  Py_XDECREF(owned_ref);
27517  #endif
27518  return (equals == Py_EQ) ? (result == 0) : (result != 0);
27519  }
27520  } else if ((s1 == Py_None) & s2_is_unicode) {
27521  goto return_ne;
27522  } else if ((s2 == Py_None) & s1_is_unicode) {
27523  goto return_ne;
27524  } else {
27525  int result;
27526  PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
27527  if (!py_result)
27528  return -1;
27529  result = __Pyx_PyObject_IsTrue(py_result);
27530  Py_DECREF(py_result);
27531  return result;
27532  }
27533 return_eq:
27534  #if PY_MAJOR_VERSION < 3
27535  Py_XDECREF(owned_ref);
27536  #endif
27537  return (equals == Py_EQ);
27538 return_ne:
27539  #if PY_MAJOR_VERSION < 3
27540  Py_XDECREF(owned_ref);
27541  #endif
27542  return (equals == Py_NE);
27543 #endif
27544 }
27545 
27546 #if CYTHON_COMPILING_IN_CPYTHON
27547 static PyObject* __Pyx_PyFloat_DivideObjC(PyObject *op1, PyObject *op2, double floatval, CYTHON_UNUSED int inplace) {
27548  const double b = floatval;
27549  double a, result;
27550  if (likely(PyFloat_CheckExact(op1))) {
27551  a = PyFloat_AS_DOUBLE(op1);
27552  } else
27553  #if PY_MAJOR_VERSION < 3
27554  if (likely(PyInt_CheckExact(op1))) {
27555  a = (double) PyInt_AS_LONG(op1);
27556  } else
27557  #endif
27558  if (likely(PyLong_CheckExact(op1))) {
27559  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27560  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27561  const Py_ssize_t size = Py_SIZE(op1);
27562  switch (size) {
27563  case 0: a = 0.0; break;
27564  case -1: a = -(double) digits[0]; break;
27565  case 1: a = (double) digits[0]; break;
27566  case -2:
27567  case 2:
27568  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (1 * PyLong_SHIFT < 53))) {
27569  a = (double) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27570  if ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27571  if (size == -2)
27572  a = -a;
27573  break;
27574  }
27575  }
27576  case -3:
27577  case 3:
27578  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (2 * PyLong_SHIFT < 53))) {
27579  a = (double) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27580  if ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27581  if (size == -3)
27582  a = -a;
27583  break;
27584  }
27585  }
27586  case -4:
27587  case 4:
27588  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT && ((8 * sizeof(unsigned long) < 53) || (3 * PyLong_SHIFT < 53))) {
27589  a = (double) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27590  if ((8 * sizeof(unsigned long) < 53) || (4 * PyLong_SHIFT < 53) || (a < (double) (1L<<53))) {
27591  if (size == -4)
27592  a = -a;
27593  break;
27594  }
27595  }
27596  default:
27597  #else
27598  {
27599  #endif
27600  a = PyLong_AsDouble(op1);
27601  if (unlikely(a == -1.0 && PyErr_Occurred())) return NULL;
27602  }
27603  } else {
27604  return (inplace ? __Pyx_PyNumber_InPlaceDivide(op1, op2) : __Pyx_PyNumber_Divide(op1, op2));
27605  }
27606  PyFPE_START_PROTECT("divide", return NULL)
27607  result = a / b;
27608  PyFPE_END_PROTECT(result)
27609  return PyFloat_FromDouble(result);
27610 }
27611 #endif
27612 
27613 #if CYTHON_COMPILING_IN_CPYTHON
27614 static PyObject* __Pyx_PyInt_EqObjC(PyObject *op1, PyObject *op2, CYTHON_UNUSED long intval, CYTHON_UNUSED int inplace) {
27615  if (op1 == op2) {
27616  Py_RETURN_TRUE;
27617  }
27618  #if PY_MAJOR_VERSION < 3
27619  if (likely(PyInt_CheckExact(op1))) {
27620  const long b = intval;
27621  long a = PyInt_AS_LONG(op1);
27622  if (a == b) {
27623  Py_RETURN_TRUE;
27624  } else {
27625  Py_RETURN_FALSE;
27626  }
27627  }
27628  #endif
27629  #if CYTHON_USE_PYLONG_INTERNALS && PY_MAJOR_VERSION >= 3
27630  if (likely(PyLong_CheckExact(op1))) {
27631  const long b = intval;
27632  long a;
27633  const digit* digits = ((PyLongObject*)op1)->ob_digit;
27634  const Py_ssize_t size = Py_SIZE(op1);
27635  if (likely(__Pyx_sst_abs(size) <= 1)) {
27636  a = likely(size) ? digits[0] : 0;
27637  if (size == -1) a = -a;
27638  } else {
27639  switch (size) {
27640  case -2:
27641  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27642  a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27643  break;
27644  }
27645  case 2:
27646  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
27647  a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27648  break;
27649  }
27650  case -3:
27651  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27652  a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27653  break;
27654  }
27655  case 3:
27656  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
27657  a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27658  break;
27659  }
27660  case -4:
27661  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27662  a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27663  break;
27664  }
27665  case 4:
27666  if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
27667  a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
27668  break;
27669  }
27670  #if PyLong_SHIFT < 30 && PyLong_SHIFT != 15
27671  default: return PyLong_Type.tp_richcompare(op1, op2, Py_EQ);
27672  #else
27673  default: Py_RETURN_FALSE;
27674  #endif
27675  }
27676  }
27677  if (a == b) {
27678  Py_RETURN_TRUE;
27679  } else {
27680  Py_RETURN_FALSE;
27681  }
27682  }
27683  #endif
27684  if (PyFloat_CheckExact(op1)) {
27685  const long b = intval;
27686  double a = PyFloat_AS_DOUBLE(op1);
27687  if ((double)a == (double)b) {
27688  Py_RETURN_TRUE;
27689  } else {
27690  Py_RETURN_FALSE;
27691  }
27692  }
27693  return PyObject_RichCompare(op1, op2, Py_EQ);
27694 }
27695 #endif
27696 
27697 static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
27698  PyObject *method, *result = NULL;
27699  method = __Pyx_PyObject_GetAttrStr(obj, method_name);
27700  if (unlikely(!method)) goto bad;
27701 #if CYTHON_COMPILING_IN_CPYTHON
27702  if (likely(PyMethod_Check(method))) {
27703  PyObject *self = PyMethod_GET_SELF(method);
27704  if (likely(self)) {
27705  PyObject *args;
27706  PyObject *function = PyMethod_GET_FUNCTION(method);
27707  args = PyTuple_New(2);
27708  if (unlikely(!args)) goto bad;
27709  Py_INCREF(self);
27710  PyTuple_SET_ITEM(args, 0, self);
27711  Py_INCREF(arg);
27712  PyTuple_SET_ITEM(args, 1, arg);
27713  Py_INCREF(function);
27714  Py_DECREF(method); method = NULL;
27715  result = __Pyx_PyObject_Call(function, args, NULL);
27716  Py_DECREF(args);
27717  Py_DECREF(function);
27718  return result;
27719  }
27720  }
27721 #endif
27722  result = __Pyx_PyObject_CallOneArg(method, arg);
27723 bad:
27724  Py_XDECREF(method);
27725  return result;
27726 }
27727 
27728 static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
27729  if (likely(PyList_CheckExact(L))) {
27730  if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
27731  } else {
27732  PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_n_s_append, x);
27733  if (unlikely(!retval))
27734  return -1;
27735  Py_DECREF(retval);
27736  }
27737  return 0;
27738 }
27739 
27740 static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
27741  PyObject* fake_module;
27742  PyTypeObject* cached_type = NULL;
27743  fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
27744  if (!fake_module) return NULL;
27745  Py_INCREF(fake_module);
27746  cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
27747  if (cached_type) {
27748  if (!PyType_Check((PyObject*)cached_type)) {
27749  PyErr_Format(PyExc_TypeError,
27750  "Shared Cython type %.200s is not a type object",
27751  type->tp_name);
27752  goto bad;
27753  }
27754  if (cached_type->tp_basicsize != type->tp_basicsize) {
27755  PyErr_Format(PyExc_TypeError,
27756  "Shared Cython type %.200s has the wrong size, try recompiling",
27757  type->tp_name);
27758  goto bad;
27759  }
27760  } else {
27761  if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
27762  PyErr_Clear();
27763  if (PyType_Ready(type) < 0) goto bad;
27764  if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
27765  goto bad;
27766  Py_INCREF(type);
27767  cached_type = type;
27768  }
27769 done:
27770  Py_DECREF(fake_module);
27771  return cached_type;
27772 bad:
27773  Py_XDECREF(cached_type);
27774  cached_type = NULL;
27775  goto done;
27776 }
27777 
27778 static PyObject *
27779 __Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, CYTHON_UNUSED void *closure)
27780 {
27781  if (unlikely(op->func_doc == NULL)) {
27782  if (op->func.m_ml->ml_doc) {
27783 #if PY_MAJOR_VERSION >= 3
27784  op->func_doc = PyUnicode_FromString(op->func.m_ml->ml_doc);
27785 #else
27786  op->func_doc = PyString_FromString(op->func.m_ml->ml_doc);
27787 #endif
27788  if (unlikely(op->func_doc == NULL))
27789  return NULL;
27790  } else {
27791  Py_INCREF(Py_None);
27792  return Py_None;
27793  }
27794  }
27795  Py_INCREF(op->func_doc);
27796  return op->func_doc;
27797 }
27798 static int
27799 __Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value)
27800 {
27801  PyObject *tmp = op->func_doc;
27802  if (value == NULL) {
27803  value = Py_None;
27804  }
27805  Py_INCREF(value);
27806  op->func_doc = value;
27807  Py_XDECREF(tmp);
27808  return 0;
27809 }
27810 static PyObject *
27811 __Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op)
27812 {
27813  if (unlikely(op->func_name == NULL)) {
27814 #if PY_MAJOR_VERSION >= 3
27815  op->func_name = PyUnicode_InternFromString(op->func.m_ml->ml_name);
27816 #else
27817  op->func_name = PyString_InternFromString(op->func.m_ml->ml_name);
27818 #endif
27819  if (unlikely(op->func_name == NULL))
27820  return NULL;
27821  }
27822  Py_INCREF(op->func_name);
27823  return op->func_name;
27824 }
27825 static int
27826 __Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value)
27827 {
27828  PyObject *tmp;
27829 #if PY_MAJOR_VERSION >= 3
27830  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
27831 #else
27832  if (unlikely(value == NULL || !PyString_Check(value))) {
27833 #endif
27834  PyErr_SetString(PyExc_TypeError,
27835  "__name__ must be set to a string object");
27836  return -1;
27837  }
27838  tmp = op->func_name;
27839  Py_INCREF(value);
27840  op->func_name = value;
27841  Py_XDECREF(tmp);
27842  return 0;
27843 }
27844 static PyObject *
27845 __Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op)
27846 {
27847  Py_INCREF(op->func_qualname);
27848  return op->func_qualname;
27849 }
27850 static int
27851 __Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value)
27852 {
27853  PyObject *tmp;
27854 #if PY_MAJOR_VERSION >= 3
27855  if (unlikely(value == NULL || !PyUnicode_Check(value))) {
27856 #else
27857  if (unlikely(value == NULL || !PyString_Check(value))) {
27858 #endif
27859  PyErr_SetString(PyExc_TypeError,
27860  "__qualname__ must be set to a string object");
27861  return -1;
27862  }
27863  tmp = op->func_qualname;
27864  Py_INCREF(value);
27865  op->func_qualname = value;
27866  Py_XDECREF(tmp);
27867  return 0;
27868 }
27869 static PyObject *
27870 __Pyx_CyFunction_get_self(__pyx_CyFunctionObject *m, CYTHON_UNUSED void *closure)
27871 {
27872  PyObject *self;
27873  self = m->func_closure;
27874  if (self == NULL)
27875  self = Py_None;
27876  Py_INCREF(self);
27877  return self;
27878 }
27879 static PyObject *
27880 __Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op)
27881 {
27882  if (unlikely(op->func_dict == NULL)) {
27883  op->func_dict = PyDict_New();
27884  if (unlikely(op->func_dict == NULL))
27885  return NULL;
27886  }
27887  Py_INCREF(op->func_dict);
27888  return op->func_dict;
27889 }
27890 static int
27891 __Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value)
27892 {
27893  PyObject *tmp;
27894  if (unlikely(value == NULL)) {
27895  PyErr_SetString(PyExc_TypeError,
27896  "function's dictionary may not be deleted");
27897  return -1;
27898  }
27899  if (unlikely(!PyDict_Check(value))) {
27900  PyErr_SetString(PyExc_TypeError,
27901  "setting function's dictionary to a non-dict");
27902  return -1;
27903  }
27904  tmp = op->func_dict;
27905  Py_INCREF(value);
27906  op->func_dict = value;
27907  Py_XDECREF(tmp);
27908  return 0;
27909 }
27910 static PyObject *
27911 __Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op)
27912 {
27913  Py_INCREF(op->func_globals);
27914  return op->func_globals;
27915 }
27916 static PyObject *
27917 __Pyx_CyFunction_get_closure(CYTHON_UNUSED __pyx_CyFunctionObject *op)
27918 {
27919  Py_INCREF(Py_None);
27920  return Py_None;
27921 }
27922 static PyObject *
27923 __Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op)
27924 {
27925  PyObject* result = (op->func_code) ? op->func_code : Py_None;
27926  Py_INCREF(result);
27927  return result;
27928 }
27929 static int
27930 __Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
27931  int result = 0;
27932  PyObject *res = op->defaults_getter((PyObject *) op);
27933  if (unlikely(!res))
27934  return -1;
27935  #if CYTHON_COMPILING_IN_CPYTHON
27936  op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
27937  Py_INCREF(op->defaults_tuple);
27938  op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
27939  Py_INCREF(op->defaults_kwdict);
27940  #else
27941  op->defaults_tuple = PySequence_ITEM(res, 0);
27942  if (unlikely(!op->defaults_tuple)) result = -1;
27943  else {
27944  op->defaults_kwdict = PySequence_ITEM(res, 1);
27945  if (unlikely(!op->defaults_kwdict)) result = -1;
27946  }
27947  #endif
27948  Py_DECREF(res);
27949  return result;
27950 }
27951 static int
27952 __Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value) {
27953  PyObject* tmp;
27954  if (!value) {
27955  value = Py_None;
27956  } else if (value != Py_None && !PyTuple_Check(value)) {
27957  PyErr_SetString(PyExc_TypeError,
27958  "__defaults__ must be set to a tuple object");
27959  return -1;
27960  }
27961  Py_INCREF(value);
27962  tmp = op->defaults_tuple;
27963  op->defaults_tuple = value;
27964  Py_XDECREF(tmp);
27965  return 0;
27966 }
27967 static PyObject *
27968 __Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op) {
27969  PyObject* result = op->defaults_tuple;
27970  if (unlikely(!result)) {
27971  if (op->defaults_getter) {
27972  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
27973  result = op->defaults_tuple;
27974  } else {
27975  result = Py_None;
27976  }
27977  }
27978  Py_INCREF(result);
27979  return result;
27980 }
27981 static int
27982 __Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value) {
27983  PyObject* tmp;
27984  if (!value) {
27985  value = Py_None;
27986  } else if (value != Py_None && !PyDict_Check(value)) {
27987  PyErr_SetString(PyExc_TypeError,
27988  "__kwdefaults__ must be set to a dict object");
27989  return -1;
27990  }
27991  Py_INCREF(value);
27992  tmp = op->defaults_kwdict;
27993  op->defaults_kwdict = value;
27994  Py_XDECREF(tmp);
27995  return 0;
27996 }
27997 static PyObject *
27998 __Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op) {
27999  PyObject* result = op->defaults_kwdict;
28000  if (unlikely(!result)) {
28001  if (op->defaults_getter) {
28002  if (__Pyx_CyFunction_init_defaults(op) < 0) return NULL;
28003  result = op->defaults_kwdict;
28004  } else {
28005  result = Py_None;
28006  }
28007  }
28008  Py_INCREF(result);
28009  return result;
28010 }
28011 static int
28012 __Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value) {
28013  PyObject* tmp;
28014  if (!value || value == Py_None) {
28015  value = NULL;
28016  } else if (!PyDict_Check(value)) {
28017  PyErr_SetString(PyExc_TypeError,
28018  "__annotations__ must be set to a dict object");
28019  return -1;
28020  }
28021  Py_XINCREF(value);
28022  tmp = op->func_annotations;
28023  op->func_annotations = value;
28024  Py_XDECREF(tmp);
28025  return 0;
28026 }
28027 static PyObject *
28028 __Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op) {
28029  PyObject* result = op->func_annotations;
28030  if (unlikely(!result)) {
28031  result = PyDict_New();
28032  if (unlikely(!result)) return NULL;
28033  op->func_annotations = result;
28034  }
28035  Py_INCREF(result);
28036  return result;
28037 }
28038 static PyGetSetDef __pyx_CyFunction_getsets[] = {
28039  {(char *) "func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
28040  {(char *) "__doc__", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
28041  {(char *) "func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
28042  {(char *) "__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
28043  {(char *) "__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
28044  {(char *) "__self__", (getter)__Pyx_CyFunction_get_self, 0, 0, 0},
28045  {(char *) "func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
28046  {(char *) "__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
28047  {(char *) "func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
28048  {(char *) "__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
28049  {(char *) "func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
28050  {(char *) "__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
28051  {(char *) "func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
28052  {(char *) "__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
28053  {(char *) "func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
28054  {(char *) "__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
28055  {(char *) "__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
28056  {(char *) "__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
28057  {0, 0, 0, 0, 0}
28058 };
28059 static PyMemberDef __pyx_CyFunction_members[] = {
28060  {(char *) "__module__", T_OBJECT, offsetof(__pyx_CyFunctionObject, func.m_module), PY_WRITE_RESTRICTED, 0},
28061  {0, 0, 0, 0, 0}
28062 };
28063 static PyObject *
28064 __Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, CYTHON_UNUSED PyObject *args)
28065 {
28066 #if PY_MAJOR_VERSION >= 3
28067  return PyUnicode_FromString(m->func.m_ml->ml_name);
28068 #else
28069  return PyString_FromString(m->func.m_ml->ml_name);
28070 #endif
28071 }
28072 static PyMethodDef __pyx_CyFunction_methods[] = {
28073  {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
28074  {0, 0, 0, 0}
28075 };
28076 #if PY_VERSION_HEX < 0x030500A0
28077 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
28078 #else
28079 #define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func.m_weakreflist)
28080 #endif
28081 static PyObject *__Pyx_CyFunction_New(PyTypeObject *type, PyMethodDef *ml, int flags, PyObject* qualname,
28082  PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
28083  __pyx_CyFunctionObject *op = PyObject_GC_New(__pyx_CyFunctionObject, type);
28084  if (op == NULL)
28085  return NULL;
28086  op->flags = flags;
28087  __Pyx_CyFunction_weakreflist(op) = NULL;
28088  op->func.m_ml = ml;
28089  op->func.m_self = (PyObject *) op;
28090  Py_XINCREF(closure);
28091  op->func_closure = closure;
28092  Py_XINCREF(module);
28093  op->func.m_module = module;
28094  op->func_dict = NULL;
28095  op->func_name = NULL;
28096  Py_INCREF(qualname);
28097  op->func_qualname = qualname;
28098  op->func_doc = NULL;
28099  op->func_classobj = NULL;
28100  op->func_globals = globals;
28101  Py_INCREF(op->func_globals);
28102  Py_XINCREF(code);
28103  op->func_code = code;
28104  op->defaults_pyobjects = 0;
28105  op->defaults = NULL;
28106  op->defaults_tuple = NULL;
28107  op->defaults_kwdict = NULL;
28108  op->defaults_getter = NULL;
28109  op->func_annotations = NULL;
28110  PyObject_GC_Track(op);
28111  return (PyObject *) op;
28112 }
28113 static int
28114 __Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
28115 {
28116  Py_CLEAR(m->func_closure);
28117  Py_CLEAR(m->func.m_module);
28118  Py_CLEAR(m->func_dict);
28119  Py_CLEAR(m->func_name);
28120  Py_CLEAR(m->func_qualname);
28121  Py_CLEAR(m->func_doc);
28122  Py_CLEAR(m->func_globals);
28123  Py_CLEAR(m->func_code);
28124  Py_CLEAR(m->func_classobj);
28125  Py_CLEAR(m->defaults_tuple);
28126  Py_CLEAR(m->defaults_kwdict);
28127  Py_CLEAR(m->func_annotations);
28128  if (m->defaults) {
28129  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
28130  int i;
28131  for (i = 0; i < m->defaults_pyobjects; i++)
28132  Py_XDECREF(pydefaults[i]);
28133  PyMem_Free(m->defaults);
28134  m->defaults = NULL;
28135  }
28136  return 0;
28137 }
28138 static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
28139 {
28140  PyObject_GC_UnTrack(m);
28141  if (__Pyx_CyFunction_weakreflist(m) != NULL)
28142  PyObject_ClearWeakRefs((PyObject *) m);
28143  __Pyx_CyFunction_clear(m);
28144  PyObject_GC_Del(m);
28145 }
28146 static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
28147 {
28148  Py_VISIT(m->func_closure);
28149  Py_VISIT(m->func.m_module);
28150  Py_VISIT(m->func_dict);
28151  Py_VISIT(m->func_name);
28152  Py_VISIT(m->func_qualname);
28153  Py_VISIT(m->func_doc);
28154  Py_VISIT(m->func_globals);
28155  Py_VISIT(m->func_code);
28156  Py_VISIT(m->func_classobj);
28157  Py_VISIT(m->defaults_tuple);
28158  Py_VISIT(m->defaults_kwdict);
28159  if (m->defaults) {
28160  PyObject **pydefaults = __Pyx_CyFunction_Defaults(PyObject *, m);
28161  int i;
28162  for (i = 0; i < m->defaults_pyobjects; i++)
28163  Py_VISIT(pydefaults[i]);
28164  }
28165  return 0;
28166 }
28167 static PyObject *__Pyx_CyFunction_descr_get(PyObject *func, PyObject *obj, PyObject *type)
28168 {
28169  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28170  if (m->flags & __Pyx_CYFUNCTION_STATICMETHOD) {
28171  Py_INCREF(func);
28172  return func;
28173  }
28174  if (m->flags & __Pyx_CYFUNCTION_CLASSMETHOD) {
28175  if (type == NULL)
28176  type = (PyObject *)(Py_TYPE(obj));
28177  return __Pyx_PyMethod_New(func, type, (PyObject *)(Py_TYPE(type)));
28178  }
28179  if (obj == Py_None)
28180  obj = NULL;
28181  return __Pyx_PyMethod_New(func, obj, type);
28182 }
28183 static PyObject*
28184 __Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
28185 {
28186 #if PY_MAJOR_VERSION >= 3
28187  return PyUnicode_FromFormat("<cyfunction %U at %p>",
28188  op->func_qualname, (void *)op);
28189 #else
28190  return PyString_FromFormat("<cyfunction %s at %p>",
28191  PyString_AsString(op->func_qualname), (void *)op);
28192 #endif
28193 }
28194 #if CYTHON_COMPILING_IN_PYPY
28195 static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
28196  PyCFunctionObject* f = (PyCFunctionObject*)func;
28197  PyCFunction meth = f->m_ml->ml_meth;
28198  PyObject *self = f->m_self;
28199  Py_ssize_t size;
28200  switch (f->m_ml->ml_flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
28201  case METH_VARARGS:
28202  if (likely(kw == NULL || PyDict_Size(kw) == 0))
28203  return (*meth)(self, arg);
28204  break;
28205  case METH_VARARGS | METH_KEYWORDS:
28206  return (*(PyCFunctionWithKeywords)meth)(self, arg, kw);
28207  case METH_NOARGS:
28208  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
28209  size = PyTuple_GET_SIZE(arg);
28210  if (likely(size == 0))
28211  return (*meth)(self, NULL);
28212  PyErr_Format(PyExc_TypeError,
28213  "%.200s() takes no arguments (%" CYTHON_FORMAT_SSIZE_T "d given)",
28214  f->m_ml->ml_name, size);
28215  return NULL;
28216  }
28217  break;
28218  case METH_O:
28219  if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
28220  size = PyTuple_GET_SIZE(arg);
28221  if (likely(size == 1)) {
28222  PyObject *result, *arg0 = PySequence_ITEM(arg, 0);
28223  if (unlikely(!arg0)) return NULL;
28224  result = (*meth)(self, arg0);
28225  Py_DECREF(arg0);
28226  return result;
28227  }
28228  PyErr_Format(PyExc_TypeError,
28229  "%.200s() takes exactly one argument (%" CYTHON_FORMAT_SSIZE_T "d given)",
28230  f->m_ml->ml_name, size);
28231  return NULL;
28232  }
28233  break;
28234  default:
28235  PyErr_SetString(PyExc_SystemError, "Bad call flags in "
28236  "__Pyx_CyFunction_Call. METH_OLDARGS is no "
28237  "longer supported!");
28238  return NULL;
28239  }
28240  PyErr_Format(PyExc_TypeError, "%.200s() takes no keyword arguments",
28241  f->m_ml->ml_name);
28242  return NULL;
28243 }
28244 #else
28245 static PyObject * __Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
28246  return PyCFunction_Call(func, arg, kw);
28247 }
28248 #endif
28249 static PyTypeObject __pyx_CyFunctionType_type = {
28250  PyVarObject_HEAD_INIT(0, 0)
28251  "cython_function_or_method",
28252  sizeof(__pyx_CyFunctionObject),
28253  0,
28254  (destructor) __Pyx_CyFunction_dealloc,
28255  0,
28256  0,
28257  0,
28258 #if PY_MAJOR_VERSION < 3
28259  0,
28260 #else
28261  0,
28262 #endif
28263  (reprfunc) __Pyx_CyFunction_repr,
28264  0,
28265  0,
28266  0,
28267  0,
28268  __Pyx_CyFunction_Call,
28269  0,
28270  0,
28271  0,
28272  0,
28273  Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,
28274  0,
28275  (traverseproc) __Pyx_CyFunction_traverse,
28276  (inquiry) __Pyx_CyFunction_clear,
28277  0,
28278 #if PY_VERSION_HEX < 0x030500A0
28279  offsetof(__pyx_CyFunctionObject, func_weakreflist),
28280 #else
28281  offsetof(PyCFunctionObject, m_weakreflist),
28282 #endif
28283  0,
28284  0,
28285  __pyx_CyFunction_methods,
28286  __pyx_CyFunction_members,
28287  __pyx_CyFunction_getsets,
28288  0,
28289  0,
28290  __Pyx_CyFunction_descr_get,
28291  0,
28292  offsetof(__pyx_CyFunctionObject, func_dict),
28293  0,
28294  0,
28295  0,
28296  0,
28297  0,
28298  0,
28299  0,
28300  0,
28301  0,
28302  0,
28303  0,
28304  0,
28305 #if PY_VERSION_HEX >= 0x030400a1
28306  0,
28307 #endif
28308 };
28309 static int __pyx_CyFunction_init(void) {
28310 #if !CYTHON_COMPILING_IN_PYPY
28311  __pyx_CyFunctionType_type.tp_call = PyCFunction_Call;
28312 #endif
28313  __pyx_CyFunctionType = __Pyx_FetchCommonType(&__pyx_CyFunctionType_type);
28314  if (__pyx_CyFunctionType == NULL) {
28315  return -1;
28316  }
28317  return 0;
28318 }
28319 static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *func, size_t size, int pyobjects) {
28320  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28321  m->defaults = PyMem_Malloc(size);
28322  if (!m->defaults)
28323  return PyErr_NoMemory();
28324  memset(m->defaults, 0, size);
28325  m->defaults_pyobjects = pyobjects;
28326  return m->defaults;
28327 }
28328 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
28329  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28330  m->defaults_tuple = tuple;
28331  Py_INCREF(tuple);
28332 }
28333 static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
28334  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28335  m->defaults_kwdict = dict;
28336  Py_INCREF(dict);
28337 }
28338 static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
28339  __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
28340  m->func_annotations = dict;
28341  Py_INCREF(dict);
28342 }
28343 
28344 static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
28345  Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
28346  for (i=0; i < nbases; i++) {
28347  PyTypeObject *tmptype;
28348  PyObject *tmp = PyTuple_GET_ITEM(bases, i);
28349  tmptype = Py_TYPE(tmp);
28350 #if PY_MAJOR_VERSION < 3
28351  if (tmptype == &PyClass_Type)
28352  continue;
28353 #endif
28354  if (!metaclass) {
28355  metaclass = tmptype;
28356  continue;
28357  }
28358  if (PyType_IsSubtype(metaclass, tmptype))
28359  continue;
28360  if (PyType_IsSubtype(tmptype, metaclass)) {
28361  metaclass = tmptype;
28362  continue;
28363  }
28364  PyErr_SetString(PyExc_TypeError,
28365  "metaclass conflict: "
28366  "the metaclass of a derived class "
28367  "must be a (non-strict) subclass "
28368  "of the metaclasses of all its bases");
28369  return NULL;
28370  }
28371  if (!metaclass) {
28372 #if PY_MAJOR_VERSION < 3
28373  metaclass = &PyClass_Type;
28374 #else
28375  metaclass = &PyType_Type;
28376 #endif
28377  }
28378  Py_INCREF((PyObject*) metaclass);
28379  return (PyObject*) metaclass;
28380 }
28381 
28382 static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
28383  PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
28384  PyObject *ns;
28385  if (metaclass) {
28386  PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
28387  if (prep) {
28388  PyObject *pargs = PyTuple_Pack(2, name, bases);
28389  if (unlikely(!pargs)) {
28390  Py_DECREF(prep);
28391  return NULL;
28392  }
28393  ns = PyObject_Call(prep, pargs, mkw);
28394  Py_DECREF(prep);
28395  Py_DECREF(pargs);
28396  } else {
28397  if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
28398  return NULL;
28399  PyErr_Clear();
28400  ns = PyDict_New();
28401  }
28402  } else {
28403  ns = PyDict_New();
28404  }
28405  if (unlikely(!ns))
28406  return NULL;
28407  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
28408  if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
28409  if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
28410  return ns;
28411 bad:
28412  Py_DECREF(ns);
28413  return NULL;
28414 }
28415 static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
28416  PyObject *dict, PyObject *mkw,
28417  int calculate_metaclass, int allow_py2_metaclass) {
28418  PyObject *result, *margs;
28419  PyObject *owned_metaclass = NULL;
28420  if (allow_py2_metaclass) {
28421  owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
28422  if (owned_metaclass) {
28423  metaclass = owned_metaclass;
28424  } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
28425  PyErr_Clear();
28426  } else {
28427  return NULL;
28428  }
28429  }
28430  if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
28431  metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
28432  Py_XDECREF(owned_metaclass);
28433  if (unlikely(!metaclass))
28434  return NULL;
28435  owned_metaclass = metaclass;
28436  }
28437  margs = PyTuple_Pack(3, name, bases, dict);
28438  if (unlikely(!margs)) {
28439  result = NULL;
28440  } else {
28441  result = PyObject_Call(metaclass, margs, mkw);
28442  Py_DECREF(margs);
28443  }
28444  Py_XDECREF(owned_metaclass);
28445  return result;
28446 }
28447 
28448 static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
28449  int start = 0, mid = 0, end = count - 1;
28450  if (end >= 0 && code_line > entries[end].code_line) {
28451  return count;
28452  }
28453  while (start < end) {
28454  mid = start + (end - start) / 2;
28455  if (code_line < entries[mid].code_line) {
28456  end = mid;
28457  } else if (code_line > entries[mid].code_line) {
28458  start = mid + 1;
28459  } else {
28460  return mid;
28461  }
28462  }
28463  if (code_line <= entries[mid].code_line) {
28464  return mid;
28465  } else {
28466  return mid + 1;
28467  }
28468 }
28469 static PyCodeObject *__pyx_find_code_object(int code_line) {
28470  PyCodeObject* code_object;
28471  int pos;
28472  if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
28473  return NULL;
28474  }
28475  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
28476  if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
28477  return NULL;
28478  }
28479  code_object = __pyx_code_cache.entries[pos].code_object;
28480  Py_INCREF(code_object);
28481  return code_object;
28482 }
28483 static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
28484  int pos, i;
28485  __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
28486  if (unlikely(!code_line)) {
28487  return;
28488  }
28489  if (unlikely(!entries)) {
28490  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
28491  if (likely(entries)) {
28492  __pyx_code_cache.entries = entries;
28493  __pyx_code_cache.max_count = 64;
28494  __pyx_code_cache.count = 1;
28495  entries[0].code_line = code_line;
28496  entries[0].code_object = code_object;
28497  Py_INCREF(code_object);
28498  }
28499  return;
28500  }
28501  pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
28502  if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
28503  PyCodeObject* tmp = entries[pos].code_object;
28504  entries[pos].code_object = code_object;
28505  Py_DECREF(tmp);
28506  return;
28507  }
28508  if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
28509  int new_max = __pyx_code_cache.max_count + 64;
28510  entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
28511  __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
28512  if (unlikely(!entries)) {
28513  return;
28514  }
28515  __pyx_code_cache.entries = entries;
28516  __pyx_code_cache.max_count = new_max;
28517  }
28518  for (i=__pyx_code_cache.count; i>pos; i--) {
28519  entries[i] = entries[i-1];
28520  }
28521  entries[pos].code_line = code_line;
28522  entries[pos].code_object = code_object;
28523  __pyx_code_cache.count++;
28524  Py_INCREF(code_object);
28525 }
28526 
28527 #include "compile.h"
28528 #include "frameobject.h"
28529 #include "traceback.h"
28530 static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
28531  const char *funcname, int c_line,
28532  int py_line, const char *filename) {
28533  PyCodeObject *py_code = 0;
28534  PyObject *py_srcfile = 0;
28535  PyObject *py_funcname = 0;
28536  #if PY_MAJOR_VERSION < 3
28537  py_srcfile = PyString_FromString(filename);
28538  #else
28539  py_srcfile = PyUnicode_FromString(filename);
28540  #endif
28541  if (!py_srcfile) goto bad;
28542  if (c_line) {
28543  #if PY_MAJOR_VERSION < 3
28544  py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
28545  #else
28546  py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
28547  #endif
28548  }
28549  else {
28550  #if PY_MAJOR_VERSION < 3
28551  py_funcname = PyString_FromString(funcname);
28552  #else
28553  py_funcname = PyUnicode_FromString(funcname);
28554  #endif
28555  }
28556  if (!py_funcname) goto bad;
28557  py_code = __Pyx_PyCode_New(
28558  0,
28559  0,
28560  0,
28561  0,
28562  0,
28563  __pyx_empty_bytes, /*PyObject *code,*/
28564  __pyx_empty_tuple, /*PyObject *consts,*/
28565  __pyx_empty_tuple, /*PyObject *names,*/
28566  __pyx_empty_tuple, /*PyObject *varnames,*/
28567  __pyx_empty_tuple, /*PyObject *freevars,*/
28568  __pyx_empty_tuple, /*PyObject *cellvars,*/
28569  py_srcfile, /*PyObject *filename,*/
28570  py_funcname, /*PyObject *name,*/
28571  py_line,
28572  __pyx_empty_bytes /*PyObject *lnotab*/
28573  );
28574  Py_DECREF(py_srcfile);
28575  Py_DECREF(py_funcname);
28576  return py_code;
28577 bad:
28578  Py_XDECREF(py_srcfile);
28579  Py_XDECREF(py_funcname);
28580  return NULL;
28581 }
28582 static void __Pyx_AddTraceback(const char *funcname, int c_line,
28583  int py_line, const char *filename) {
28584  PyCodeObject *py_code = 0;
28585  PyFrameObject *py_frame = 0;
28586  py_code = __pyx_find_code_object(c_line ? c_line : py_line);
28587  if (!py_code) {
28588  py_code = __Pyx_CreateCodeObjectForTraceback(
28589  funcname, c_line, py_line, filename);
28590  if (!py_code) goto bad;
28591  __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
28592  }
28593  py_frame = PyFrame_New(
28594  PyThreadState_GET(), /*PyThreadState *tstate,*/
28595  py_code, /*PyCodeObject *code,*/
28596  __pyx_d, /*PyObject *globals,*/
28597  0 /*PyObject *locals*/
28598  );
28599  if (!py_frame) goto bad;
28600  py_frame->f_lineno = py_line;
28601  PyTraceBack_Here(py_frame);
28602 bad:
28603  Py_XDECREF(py_code);
28604  Py_XDECREF(py_frame);
28605 }
28606 
28607 static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
28608  const long neg_one = (long) -1, const_zero = (long) 0;
28609  const int is_unsigned = neg_one > const_zero;
28610  if (is_unsigned) {
28611  if (sizeof(long) < sizeof(long)) {
28612  return PyInt_FromLong((long) value);
28613  } else if (sizeof(long) <= sizeof(unsigned long)) {
28614  return PyLong_FromUnsignedLong((unsigned long) value);
28615  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
28616  return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
28617  }
28618  } else {
28619  if (sizeof(long) <= sizeof(long)) {
28620  return PyInt_FromLong((long) value);
28621  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
28622  return PyLong_FromLongLong((PY_LONG_LONG) value);
28623  }
28624  }
28625  {
28626  int one = 1; int little = (int)*(unsigned char *)&one;
28627  unsigned char *bytes = (unsigned char *)&value;
28628  return _PyLong_FromByteArray(bytes, sizeof(long),
28629  little, !is_unsigned);
28630  }
28631 }
28632 
28633 #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
28634  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
28635 #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
28636  __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
28637 #define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
28638  {\
28639  func_type value = func_value;\
28640  if (sizeof(target_type) < sizeof(func_type)) {\
28641  if (unlikely(value != (func_type) (target_type) value)) {\
28642  func_type zero = 0;\
28643  if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
28644  return (target_type) -1;\
28645  if (is_unsigned && unlikely(value < zero))\
28646  goto raise_neg_overflow;\
28647  else\
28648  goto raise_overflow;\
28649  }\
28650  }\
28651  return (target_type) value;\
28652  }
28653 
28654 static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
28655  const long neg_one = (long) -1, const_zero = (long) 0;
28656  const int is_unsigned = neg_one > const_zero;
28657 #if PY_MAJOR_VERSION < 3
28658  if (likely(PyInt_Check(x))) {
28659  if (sizeof(long) < sizeof(long)) {
28660  __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
28661  } else {
28662  long val = PyInt_AS_LONG(x);
28663  if (is_unsigned && unlikely(val < 0)) {
28664  goto raise_neg_overflow;
28665  }
28666  return (long) val;
28667  }
28668  } else
28669 #endif
28670  if (likely(PyLong_Check(x))) {
28671  if (is_unsigned) {
28672 #if CYTHON_USE_PYLONG_INTERNALS
28673  const digit* digits = ((PyLongObject*)x)->ob_digit;
28674  switch (Py_SIZE(x)) {
28675  case 0: return (long) 0;
28676  case 1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
28677  case 2:
28678  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
28679  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28680  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28681  } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
28682  return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28683  }
28684  }
28685  break;
28686  case 3:
28687  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
28688  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28689  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28690  } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
28691  return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28692  }
28693  }
28694  break;
28695  case 4:
28696  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
28697  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28698  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28699  } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
28700  return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
28701  }
28702  }
28703  break;
28704  }
28705 #endif
28706 #if CYTHON_COMPILING_IN_CPYTHON
28707  if (unlikely(Py_SIZE(x) < 0)) {
28708  goto raise_neg_overflow;
28709  }
28710 #else
28711  {
28712  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
28713  if (unlikely(result < 0))
28714  return (long) -1;
28715  if (unlikely(result == 1))
28716  goto raise_neg_overflow;
28717  }
28718 #endif
28719  if (sizeof(long) <= sizeof(unsigned long)) {
28720  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
28721  } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
28722  __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
28723  }
28724  } else {
28725 #if CYTHON_USE_PYLONG_INTERNALS
28726  const digit* digits = ((PyLongObject*)x)->ob_digit;
28727  switch (Py_SIZE(x)) {
28728  case 0: return (long) 0;
28729  case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
28730  case 1: __PYX_VERIFY_RETURN_INT(long, digit, +digits[0])
28731  case -2:
28732  if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
28733  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28734  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28735  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28736  return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28737  }
28738  }
28739  break;
28740  case 2:
28741  if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
28742  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28743  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28744  } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28745  return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28746  }
28747  }
28748  break;
28749  case -3:
28750  if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
28751  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28752  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28753  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28754  return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28755  }
28756  }
28757  break;
28758  case 3:
28759  if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
28760  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28761  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28762  } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28763  return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28764  }
28765  }
28766  break;
28767  case -4:
28768  if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
28769  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28770  __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28771  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
28772  return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28773  }
28774  }
28775  break;
28776  case 4:
28777  if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
28778  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28779  __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28780  } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
28781  return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
28782  }
28783  }
28784  break;
28785  }
28786 #endif
28787  if (sizeof(long) <= sizeof(long)) {
28788  __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
28789  } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
28790  __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
28791  }
28792  }
28793  {
28794 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
28795  PyErr_SetString(PyExc_RuntimeError,
28796  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
28797 #else
28798  long val;
28799  PyObject *v = __Pyx_PyNumber_Int(x);
28800  #if PY_MAJOR_VERSION < 3
28801  if (likely(v) && !PyLong_Check(v)) {
28802  PyObject *tmp = v;
28803  v = PyNumber_Long(tmp);
28804  Py_DECREF(tmp);
28805  }
28806  #endif
28807  if (likely(v)) {
28808  int one = 1; int is_little = (int)*(unsigned char *)&one;
28809  unsigned char *bytes = (unsigned char *)&val;
28810  int ret = _PyLong_AsByteArray((PyLongObject *)v,
28811  bytes, sizeof(val),
28812  is_little, !is_unsigned);
28813  Py_DECREF(v);
28814  if (likely(!ret))
28815  return val;
28816  }
28817 #endif
28818  return (long) -1;
28819  }
28820  } else {
28821  long val;
28822  PyObject *tmp = __Pyx_PyNumber_Int(x);
28823  if (!tmp) return (long) -1;
28824  val = __Pyx_PyInt_As_long(tmp);
28825  Py_DECREF(tmp);
28826  return val;
28827  }
28828 raise_overflow:
28829  PyErr_SetString(PyExc_OverflowError,
28830  "value too large to convert to long");
28831  return (long) -1;
28832 raise_neg_overflow:
28833  PyErr_SetString(PyExc_OverflowError,
28834  "can't convert negative value to long");
28835  return (long) -1;
28836 }
28837 
28838 static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
28839  const int neg_one = (int) -1, const_zero = (int) 0;
28840  const int is_unsigned = neg_one > const_zero;
28841 #if PY_MAJOR_VERSION < 3
28842  if (likely(PyInt_Check(x))) {
28843  if (sizeof(int) < sizeof(long)) {
28844  __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
28845  } else {
28846  long val = PyInt_AS_LONG(x);
28847  if (is_unsigned && unlikely(val < 0)) {
28848  goto raise_neg_overflow;
28849  }
28850  return (int) val;
28851  }
28852  } else
28853 #endif
28854  if (likely(PyLong_Check(x))) {
28855  if (is_unsigned) {
28856 #if CYTHON_USE_PYLONG_INTERNALS
28857  const digit* digits = ((PyLongObject*)x)->ob_digit;
28858  switch (Py_SIZE(x)) {
28859  case 0: return (int) 0;
28860  case 1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
28861  case 2:
28862  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
28863  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28864  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28865  } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
28866  return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
28867  }
28868  }
28869  break;
28870  case 3:
28871  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
28872  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28873  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28874  } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
28875  return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
28876  }
28877  }
28878  break;
28879  case 4:
28880  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
28881  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28882  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28883  } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
28884  return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
28885  }
28886  }
28887  break;
28888  }
28889 #endif
28890 #if CYTHON_COMPILING_IN_CPYTHON
28891  if (unlikely(Py_SIZE(x) < 0)) {
28892  goto raise_neg_overflow;
28893  }
28894 #else
28895  {
28896  int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
28897  if (unlikely(result < 0))
28898  return (int) -1;
28899  if (unlikely(result == 1))
28900  goto raise_neg_overflow;
28901  }
28902 #endif
28903  if (sizeof(int) <= sizeof(unsigned long)) {
28904  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
28905  } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
28906  __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
28907  }
28908  } else {
28909 #if CYTHON_USE_PYLONG_INTERNALS
28910  const digit* digits = ((PyLongObject*)x)->ob_digit;
28911  switch (Py_SIZE(x)) {
28912  case 0: return (int) 0;
28913  case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
28914  case 1: __PYX_VERIFY_RETURN_INT(int, digit, +digits[0])
28915  case -2:
28916  if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
28917  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28918  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28919  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
28920  return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28921  }
28922  }
28923  break;
28924  case 2:
28925  if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
28926  if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
28927  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28928  } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
28929  return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28930  }
28931  }
28932  break;
28933  case -3:
28934  if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
28935  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28936  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28937  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
28938  return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28939  }
28940  }
28941  break;
28942  case 3:
28943  if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
28944  if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
28945  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28946  } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
28947  return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28948  }
28949  }
28950  break;
28951  case -4:
28952  if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
28953  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28954  __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28955  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
28956  return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28957  }
28958  }
28959  break;
28960  case 4:
28961  if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
28962  if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
28963  __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
28964  } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
28965  return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
28966  }
28967  }
28968  break;
28969  }
28970 #endif
28971  if (sizeof(int) <= sizeof(long)) {
28972  __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
28973  } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
28974  __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
28975  }
28976  }
28977  {
28978 #if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
28979  PyErr_SetString(PyExc_RuntimeError,
28980  "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
28981 #else
28982  int val;
28983  PyObject *v = __Pyx_PyNumber_Int(x);
28984  #if PY_MAJOR_VERSION < 3
28985  if (likely(v) && !PyLong_Check(v)) {
28986  PyObject *tmp = v;
28987  v = PyNumber_Long(tmp);
28988  Py_DECREF(tmp);
28989  }
28990  #endif
28991  if (likely(v)) {
28992  int one = 1; int is_little = (int)*(unsigned char *)&one;
28993  unsigned char *bytes = (unsigned char *)&val;
28994  int ret = _PyLong_AsByteArray((PyLongObject *)v,
28995  bytes, sizeof(val),
28996  is_little, !is_unsigned);
28997  Py_DECREF(v);
28998  if (likely(!ret))
28999  return val;
29000  }
29001 #endif
29002  return (int) -1;
29003  }
29004  } else {
29005  int val;
29006  PyObject *tmp = __Pyx_PyNumber_Int(x);
29007  if (!tmp) return (int) -1;
29008  val = __Pyx_PyInt_As_int(tmp);
29009  Py_DECREF(tmp);
29010  return val;
29011  }
29012 raise_overflow:
29013  PyErr_SetString(PyExc_OverflowError,
29014  "value too large to convert to int");
29015  return (int) -1;
29016 raise_neg_overflow:
29017  PyErr_SetString(PyExc_OverflowError,
29018  "can't convert negative value to int");
29019  return (int) -1;
29020 }
29021 
29022 static int __Pyx_check_binary_version(void) {
29023  char ctversion[4], rtversion[4];
29024  PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
29025  PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
29026  if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
29027  char message[200];
29028  PyOS_snprintf(message, sizeof(message),
29029  "compiletime version %s of module '%.100s' "
29030  "does not match runtime version %s",
29031  ctversion, __Pyx_MODULE_NAME, rtversion);
29032  return PyErr_WarnEx(NULL, message, 1);
29033  }
29034  return 0;
29035 }
29036 
29037 static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
29038  while (t->p) {
29039  #if PY_MAJOR_VERSION < 3
29040  if (t->is_unicode) {
29041  *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
29042  } else if (t->intern) {
29043  *t->p = PyString_InternFromString(t->s);
29044  } else {
29045  *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
29046  }
29047  #else
29048  if (t->is_unicode | t->is_str) {
29049  if (t->intern) {
29050  *t->p = PyUnicode_InternFromString(t->s);
29051  } else if (t->encoding) {
29052  *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
29053  } else {
29054  *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
29055  }
29056  } else {
29057  *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
29058  }
29059  #endif
29060  if (!*t->p)
29061  return -1;
29062  ++t;
29063  }
29064  return 0;
29065 }
29066 
29067 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
29068  return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
29069 }
29070 static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
29071  Py_ssize_t ignore;
29072  return __Pyx_PyObject_AsStringAndSize(o, &ignore);
29073 }
29074 static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
29075 #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
29076  if (
29077 #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29078  __Pyx_sys_getdefaultencoding_not_ascii &&
29079 #endif
29080  PyUnicode_Check(o)) {
29081 #if PY_VERSION_HEX < 0x03030000
29082  char* defenc_c;
29083  PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
29084  if (!defenc) return NULL;
29085  defenc_c = PyBytes_AS_STRING(defenc);
29086 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29087  {
29088  char* end = defenc_c + PyBytes_GET_SIZE(defenc);
29089  char* c;
29090  for (c = defenc_c; c < end; c++) {
29091  if ((unsigned char) (*c) >= 128) {
29092  PyUnicode_AsASCIIString(o);
29093  return NULL;
29094  }
29095  }
29096  }
29097 #endif
29098  *length = PyBytes_GET_SIZE(defenc);
29099  return defenc_c;
29100 #else
29101  if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
29102 #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
29103  if (PyUnicode_IS_ASCII(o)) {
29104  *length = PyUnicode_GET_LENGTH(o);
29105  return PyUnicode_AsUTF8(o);
29106  } else {
29107  PyUnicode_AsASCIIString(o);
29108  return NULL;
29109  }
29110 #else
29111  return PyUnicode_AsUTF8AndSize(o, length);
29112 #endif
29113 #endif
29114  } else
29115 #endif
29116 #if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
29117  if (PyByteArray_Check(o)) {
29118  *length = PyByteArray_GET_SIZE(o);
29119  return PyByteArray_AS_STRING(o);
29120  } else
29121 #endif
29122  {
29123  char* result;
29124  int r = PyBytes_AsStringAndSize(o, &result, length);
29125  if (unlikely(r < 0)) {
29126  return NULL;
29127  } else {
29128  return result;
29129  }
29130  }
29131 }
29132 static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
29133  int is_true = x == Py_True;
29134  if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
29135  else return PyObject_IsTrue(x);
29136 }
29137 static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
29138  PyNumberMethods *m;
29139  const char *name = NULL;
29140  PyObject *res = NULL;
29141 #if PY_MAJOR_VERSION < 3
29142  if (PyInt_Check(x) || PyLong_Check(x))
29143 #else
29144  if (PyLong_Check(x))
29145 #endif
29146  return __Pyx_NewRef(x);
29147  m = Py_TYPE(x)->tp_as_number;
29148 #if PY_MAJOR_VERSION < 3
29149  if (m && m->nb_int) {
29150  name = "int";
29151  res = PyNumber_Int(x);
29152  }
29153  else if (m && m->nb_long) {
29154  name = "long";
29155  res = PyNumber_Long(x);
29156  }
29157 #else
29158  if (m && m->nb_int) {
29159  name = "int";
29160  res = PyNumber_Long(x);
29161  }
29162 #endif
29163  if (res) {
29164 #if PY_MAJOR_VERSION < 3
29165  if (!PyInt_Check(res) && !PyLong_Check(res)) {
29166 #else
29167  if (!PyLong_Check(res)) {
29168 #endif
29169  PyErr_Format(PyExc_TypeError,
29170  "__%.4s__ returned non-%.4s (type %.200s)",
29171  name, name, Py_TYPE(res)->tp_name);
29172  Py_DECREF(res);
29173  return NULL;
29174  }
29175  }
29176  else if (!PyErr_Occurred()) {
29177  PyErr_SetString(PyExc_TypeError,
29178  "an integer is required");
29179  }
29180  return res;
29181 }
29182 static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
29183  Py_ssize_t ival;
29184  PyObject *x;
29185 #if PY_MAJOR_VERSION < 3
29186  if (likely(PyInt_CheckExact(b))) {
29187  if (sizeof(Py_ssize_t) >= sizeof(long))
29188  return PyInt_AS_LONG(b);
29189  else
29190  return PyInt_AsSsize_t(x);
29191  }
29192 #endif
29193  if (likely(PyLong_CheckExact(b))) {
29194  #if CYTHON_USE_PYLONG_INTERNALS
29195  const digit* digits = ((PyLongObject*)b)->ob_digit;
29196  const Py_ssize_t size = Py_SIZE(b);
29197  if (likely(__Pyx_sst_abs(size) <= 1)) {
29198  ival = likely(size) ? digits[0] : 0;
29199  if (size == -1) ival = -ival;
29200  return ival;
29201  } else {
29202  switch (size) {
29203  case 2:
29204  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
29205  return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29206  }
29207  break;
29208  case -2:
29209  if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
29210  return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29211  }
29212  break;
29213  case 3:
29214  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
29215  return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29216  }
29217  break;
29218  case -3:
29219  if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
29220  return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29221  }
29222  break;
29223  case 4:
29224  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
29225  return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29226  }
29227  break;
29228  case -4:
29229  if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
29230  return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
29231  }
29232  break;
29233  }
29234  }
29235  #endif
29236  return PyLong_AsSsize_t(b);
29237  }
29238  x = PyNumber_Index(b);
29239  if (!x) return -1;
29240  ival = PyInt_AsSsize_t(x);
29241  Py_DECREF(x);
29242  return ival;
29243 }
29244 static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
29245  return PyInt_FromSize_t(ival);
29246 }
29247 
29248 
29249 #endif /* Py_PYTHON_H */
double f(double C, double b, double a, int q, int r)
#define PyMODINIT_FUNC